Это потому, что в первой строке не сравниваются две переменные одного типа:
echo ( 0 == '' ? 1 : 0); // Output is 1
echo ('0' == '' ? 1 : 0); // Output is 0
Обратите внимание на следующее:
echo ( 0 === '' ? 1 : 0); // Output is 0
Оператор ===
делает тип чувствительнымпроверка на равенство, которая, кажется, то, что вы ожидаете.==
сделает нечеткую проверку, если два аргумента не относятся к одному и тому же типу.
Вы должны проверить документацию операторов сравнения для получения дополнительной информации:
Если вы сравниваете число со строкой или сравнение включает числовые строки, то каждая строка преобразуется в число, и сравнение выполняется численно.