Ответ 1
Да, true
равно (==
) непустой строке. Не идентично (===
).
Я предлагаю вам просмотреть таблицу сравнения .
Я уверен, что это простой фундаментальный недостаток в моих новых знаниях PHP, но я был удивлен, когда произошло следующее:
$result
is TRUE
... так почему он считается равным строке "email"? Я предполагаю, что это потому, что, технически, это bool
, и это не ложь? Поэтому, когда он сравнивается со строкой (например, "электронная почта" ), он возвращает true.
Должен ли я изменить свой метод для возврата в качестве результата string
, содержащего "true" (вместо return true;
при успешном завершении), или есть ли другой способ, которым я должен это делать?
Спасибо.
Да, true
равно (==
) непустой строке. Не идентично (===
).
Я предлагаю вам просмотреть таблицу сравнения .
Он возвращает true, потому что php попытается преобразовать что-то, чтобы иметь возможность сравнивать их. В этом случае он, вероятно, пытается преобразовать строку с правой стороны в bool, которая в этом случае будет истина. И правда == верно, правда.
Выполняя $result === "email" (triple =), вы указываете PHP, что он не делает преобразований и должен возвращать false, если типы не совпадают.
if($result === "email")
будет делать трюк, но лично я бы никогда не пошел таким путем.