PHP混淆中的比较运算符"=="

eri*_*icj 4 php

在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",所以这就是原因不是比较真实.