PHP ==将“2.5”转换为2?

时间:2012-09-21 19:43:42

标签: php casting equals operator-keyword

我对这个平等的操作员感到有点难过。

echo(2 ==“2.5time”)

应输出为1 / true。

“2.5time”字符串应该转换为整数,输出2作为整数。

但它似乎没有输出任何东西。

任何人都可以解释一下吗?

4 个答案:

答案 0 :(得分:4)

如果它没有输出任何东西意味着它是假的,做一个var_dump(2 ==“2.5time”)来看看发生了什么。

答案 1 :(得分:2)

比较是PHP解析字符串并获得2.5的浮点数。然后将它与您的整数进行比较,该整数被视为浮动2.0

答案 2 :(得分:1)

如果您希望将字符串开头的数字作为整数处理,那么您必须键入将它们转换为整数,因此

if(2 == (int)"2.5times") // will be true

答案 3 :(得分:0)

如果使用==运算符,则会比较所有字符串。

(2 == "2") // is true, because is the same value
(2 === "2") // is false, because is the same value, but is different types
(2 == "23") // is false, contains different values

但在你的情况下,最好使用strpos来查找字符串中的子字符串。