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

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

введите описание изображения здесь

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

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

Благодарю.

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

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

    Предлагаю вам ознакомиться с таблицей сравнения типов .

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

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

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