我想互相检查两个字符串,一个以零开头,一个没有。但这似乎导致了一个真实的结果。一个例子:
if("098" == "98"){
return true;
}
有人可以解释为什么这句话在PHP中会成立吗?
答案 0 :(得分:1)
我能想到的一个简单原因是,如果运算符==在不同类型之间进行转换,则===运算符执行类型安全比较'。这意味着如果两个操作数具有相同的类型和相同的值,它将仅返回true。
所以从你的例子中,
if("098" == "98"){
//true
}
另外一些PHP函数也有参数来暗示严格的检查。一个例子是in_array
答案 1 :(得分:1)
如果与==
进行比较,php会尝试比较它们而不考虑类型。那么实际发生了什么,php将这两个数字转换为整数,而98等于98,"098" == "98"
也是如此。
避免这种情况的最佳方法是使用===
,它还会比较没有任何转化的类型。
if("098" === "98"){
return true;
}