我在许多事件中遇到过这个php“错误”,但我从来没有停止过关于它的事情。所以这是我要求有人帮助我理解这一点:
$int = 0;
var_dump($int == "string");
var_dump(false == "string");
var_dump(false == $int);
答案 0 :(得分:2)
我们使用==
进行松散比较,使用===
进行严格比较。
$int = 0;
var_dump($int === "string"); //false
var_dump(false === "string"); //false
var_dump(false === $int); //false
答案 1 :(得分:2)
PHP手册中有一个Comparison Table类型,它可以让您了解在比较两种不同数据类型的变量时会发生什么。
你的第一个例子('松散'比较,因为它也不检查两个操作数的数据类型)隐式地将左边的字符串转换为整数。由于它不以数字开头,因此字符串将转换为整数0,它等于整数0。
您的第二个示例不仅会比较值,还会比较类型。由于类型不同,因此比较为假。
答案 2 :(得分:0)
在PHP中,==运算符检查两个值是否相等 - 换句话说,PHP将在需要时使用类型juggling,但是0 == false,1 =='1'等等都将为真。
要检查两个值是否相同(包括类型),请使用===运算符。