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