Оператор сравнение в PHP вопрос из ZCE php: как это понять?
Which of the following comparisons will evaluate to true?
Правильные ответы :
1) 't' == t
2) "top" == 0
3) 1 == "1time"
Я думал что вариант 3) правильный. Понятно что вариант 2) тоже подходит : так как интерпретатор преобразует строку "top" в число и это ноль, то есть 0 == 0.
Но каким образом черт подери вариант 1) оказалось правильным, проверил на phpfiddle.org: все правильно.
Кто-нибудь может мне объяснить почему вариант 1) уместен ?
Если вы используете неопределенную константу, PHP предполагает, что вы имеете ввиду само имя константы, как если бы вы указали литерал типа string (CONSTANT вместо "CONSTANT"). При этом будет сгенерирована ошибка уровня E_NOTICE. Смотрите также главу руководства, которая разъясняет, почему $foo[bar] - это неправильно (конечно, если вы перед этим не объявили bar как константу с помощью define()). Если вы просто хотите проверить, определена ли константа, используйте функцию defined().
по моему интерпретатор должен рассматривать t как константу, а раз это константа не объявлено должно было возвратиться null, то есть это пустая строка в итоге : 't' == '' не так ли?