为什么'0'不等于null

时间:2018-02-24 01:13:00

标签: php null comparison

从我在数学中学到的东西:

  

每当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将两边转换为布尔值?或者没什么比较的东西?

1 个答案:

答案 0 :(得分:3)

A&#39;真实&#39; (严格)PHP中的等价是===。如果你使用它,你会喜欢你提到的传递性属性。

但是==并不是PHP中的完全等价。它首先将操作数转换为通用类型。我们可以看到,使用false作为第一个操作数会导致第二个操作数减少为布尔值。但是,如果将引用与字符串进行比较,则不会发生这种减少,这就是为什么值被视为不同的原因。当然,这种方法违反了及物性。但是,再次===是一个真实的&#39;等号,而不是==

相关问题