Подтвердить что ты не робот

Сравнение строк на bool

Я уверен, что это простой фундаментальный недостаток в моих новых знаниях PHP, но я был удивлен, когда произошло следующее:

enter image description here

$result is TRUE... так почему он считается равным строке "email"? Я предполагаю, что это потому, что, технически, это bool, и это не ложь? Поэтому, когда он сравнивается со строкой (например, "электронная почта" ), он возвращает true.

Должен ли я изменить свой метод для возврата в качестве результата string, содержащего "true" (вместо return true; при успешном завершении), или есть ли другой способ, которым я должен это делать?

Спасибо.

4b9b3361

Ответ 1

Да, true равно (==) непустой строке. Не идентично (===).

Я предлагаю вам просмотреть таблицу сравнения .

Ответ 2

Он возвращает true, потому что php попытается преобразовать что-то, чтобы иметь возможность сравнивать их. В этом случае он, вероятно, пытается преобразовать строку с правой стороны в bool, которая в этом случае будет истина. И правда == верно, правда.

Выполняя $result === "email" (triple =), вы указываете PHP, что он не делает преобразований и должен возвращать false, если типы не совпадают.

Ответ 3

if($result === "email") будет делать трюк, но лично я бы никогда не пошел таким путем.