问题
I'm pretty sure this is a simple fundamental flaw in my newb PHP knowledge, but I was surprised when the following happened:
$result
is TRUE
... so why is it considered equal to the string "email"? I'm guessing this is because, technically, it's a bool
and it isn't false? So when it's compared against a string (e.g. "email") it returns true.
Should I change my method to return as the result as a string
containing "true" (instead of return true;
on success), or is there another way I should be doing this?
Thanks.
回答1:
Yes, true
is equal (==
) to a non-empty string. Not identical (===
) though.
I suggest you peruse the type comparison table.
回答2:
It returns true because php will try to convert something to be able to compare them. In this case it probably tries to convert the string on the right side to a bool which will be true in this case. And true == true is ofcourse true.
By doing $result === "email" (triple =) you tell PHP that it shoudn't do conversions and should return false if the types don't match.
回答3:
if($result === "email")
will do the trick but personally I would never go this way.
来源:https://stackoverflow.com/questions/5938221/string-compare-on-a-bool