开发者

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:

String compare on a bool

$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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜