Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
var_dump(true == "a"); // bool(true) ← числа нет. сравнивается «истина» и непустая строка неравная нулю → истина
var_dump("a" == 0); // bool(true) ← число есть. левую часть тоже к числу. "а" преобразуется к нулю. → истина
var_dump(true == 0); // bool(false) ← число есть. правую часть к числу. «true» преобразуется в единицу → ложь
function f(Int $a)
{
$b = new Int($_GET['b']);
echo $a == $b; // неопределенность исключена
}
$a = "true";
$b = "false";
$c = "lol";
$bool = true;
if($a > $b){ // true
echo "true<br />";
} else {
echo "false<br />";
}
if($b > $c){ // false
echo "true<br />";
} else {
echo "false<br />";
}
if($a > $c){ // true
echo "true<br />";
} else {
echo "false<br />";
}
if($b == $bool){ // true
echo "true<br />";
} else {
echo "false<br />";
}
$b == $bool
строка приводится к булевому типу, а так как она не пустая, значит приводится к значению true.
Особенности логического сравнения в PHP