在PHP中,
null==0
0=="0"
Run Code Online (Sandbox Code Playgroud)
如果你将这两者结合起来,你会期望:
null=="0"
Run Code Online (Sandbox Code Playgroud)
但是这是错误的.
有人可以向我解释一下吗?
Nel*_*son 10
在第一种情况下:
null==0
Run Code Online (Sandbox Code Playgroud)
null计算结果为false,相同0计算结果为false,使两者都false和因此比较返回true.
在第二种情况:
0=="0"
Run Code Online (Sandbox Code Playgroud)
这里你比较了两个不同类型的变量,一个是数字和其他字符串,因为你没有使用===运算符,PHP将其中一个转换为另一个类型,所以0转换为字符串等于"0",所以它们是同样,如果它是"0",它被转换为数字也会转换为0,所以它与另一个值相同,所以这个比较返回true.
在第三种情况:
null=="0"
Run Code Online (Sandbox Code Playgroud)
这里是相同的情况,两者都是不同的类型,所以PHP将其中一个转换为另一个的类型,但如果你将null转换为字符串,结果是"null",它不等于"0",所以这就是原因不是比较真实.