String compare on a bool

廉价感情. 提交于 2019-11-26 22:00:59

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!