从我在数学中学到的东西:
每当A = B且B = C时,则A = C
所以如果null == false and false == '0', then null == '0'
让我们在PHP中试试这个
<?php
echo (false == null); // true
echo (false == '0'); // true
echo (null == '0'); // false
?>
显然,我的闪亮数学基础不适合这种情况,我不知道为什么?
修改
我需要更多地澄清内部发生的事情? PHP将两边转换为布尔值?或者没什么比较的东西?
答案 0 :(得分:3)
A&#39;真实&#39; (严格)PHP中的等价是===
。如果你使用它,你会喜欢你提到的传递性属性。
但是==
并不是PHP中的完全等价。它首先将操作数转换为通用类型。我们可以看到,使用false
作为第一个操作数会导致第二个操作数减少为布尔值。但是,如果将引用与字符串进行比较,则不会发生这种减少,这就是为什么值被视为不同的原因。当然,这种方法违反了及物性。但是,再次===
是一个真实的&#39;等号,而不是==
。