String compare on a bool
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 c开发者_运维技巧onsidered 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.
Yes, true
is equal (==
) to a non-empty string. Not identical (===
) though.
I suggest you peruse the type comparison table.
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.
if($result === "email")
will do the trick but personally I would never go this way.
精彩评论