Что не работает:
(int)08 == (int)09==0
Но это и это делает?
(int)07==7 (int)06==6
08 находится в восьмеричной базе (потому что начинается с 0), следовательно, оно недопустимо. См. Документацию .
потому что 08 и 09 не являются действительными восьмеричными числами. см. Предупреждение в документации .
08
09
Вы вводите неверное число в восьмеричной базе.
вы явно вводите типизацию с помощью (int)
(int)
Лучше использовать intval().
intval().
// Syntax error //(int)08 == (int)09==0 // This works (int)08==0; (int)09==0; // This also works (int)08 == ((int)09==0);
Чтобы использовать шестнадцатеричное обозначение, перед числом введите 0x.
Следовательно,
$num = (int)0x9 $num == 9