В PHP true == false?

Следният програмен код е написан на PHP:

$var1 = "abcdefgh";
$var2 = 0;
if($var1 == true && $var2 == false && $var1 == $var2){
   echo "Вярно е!";
}

Защо в резултат от него в стандартния изход се изписва “Вярно е!”? Как така една променлива е true, друга е false, а двете са равни?

Тази задача може да се използва, за да се демонстрират езици без строго типизиране и да се обясни, че е важно да се знаят правилата за преобразуване от един тип данни в друг. В случая при първото стравнение ($var 1 == true) има сравнение между текстови низ и булев тип. То е вярно, защото един низ е true ако не е празен. Второто сравнение ($var2 == false) също е истина, защото един целочислен тип е true тогава, когато е различен от 0 и false ако е равен на 0. Накрая, сравнението между текст и целочислен тип ($var1 == $var2) също е истина, защото правилото е, че низа се превръща в число – това число, с което той евентуално започва в началото си. В случая низът не започва с число, затова той се превръща в 0 и сравнението става вярно.

Leave a Reply

Your email address will not be published. Required fields are marked *