String to int voodoo
Интересное поведение PHP: для людей писавших на нормальных языках это поведение сносит крышу:
<?
echo "<pre>";
echo (int)("all"==true)."\n"; // 1
echo (int)("all"==false)."\n"; // 0
echo (int)(1==true)."\n"; // 1
echo (int)(0==true)."\n"; // 0
echo (int)("all"==1)."\n"; // 0
echo (int)("all"==0)."\n"; // 1
echo "</pre>";
?>
А всё потому, что PHP при общении между строками и int приводит строки as is. То есть:
<?
echo "<pre>";
echo (int)"all"."\n"; // 0
echo (int)"123"."\n"; // 123
echo (int)"0123"."\n"; // 123
echo (int)"0xff"."\n"; //0
echo (int)"8sd"."\n"; // 8
echo "</pre>";
?>
Но! Тут уже начинает сносить крышу у меня:
<?
echo "<pre>";
echo (int)("0xff"==0)."\n"; // 0
echo (int)((int)"0xff"==0)."\n"; // 1
echo (int)("0xff"==255)."\n"; // 1
echo "</pre>";
?>
Это обьяснить и понять уже сложнее.