比较两个字符串,其中一个以零开头

时间:2017-03-30 09:38:47

标签: php

我想互相检查两个字符串,一个以零开头,一个没有。但这似乎导致了一个真实的结果。一个例子:

if("098" == "98"){
   return true;
}

有人可以解释为什么这句话在PHP中会成立吗?

2 个答案:

答案 0 :(得分:1)

我能想到的一个简单原因是,如果运算符==在不同类型之间进行转换,则===运算符执行类型安全比较'。这意味着如果两个操作数具有相同的类型和相同的值,它将仅返回true。

所以从你的例子中,

if("098" == "98"){
   //true
}

另外一些PHP函数也有参数来暗示严格的检查。一个例子是in_array

答案 1 :(得分:1)

如果与==进行比较,php会尝试比较它们而不考虑类型。那么实际发生了什么,php将这两个数字转换为整数,而98等于98,"098" == "98"也是如此。

避免这种情况的最佳方法是使用===,它还会比较没有任何转化的类型。

if("098" === "98"){
    return true;
}