2

我确定我测试的数组为空。甚至做var_dump(array)版画array(0) { }

但是测试$this->assertNull($array);失败了。
相反,当我测试下面的代码时,它会进入if条件:

if ($array == null) {
    echo "Entered";
} else {
    echo "Not Entered";
}

我不明白为什么会这样。如果有人知道原因,请解释我。

4

1 回答 1

5

array(0) { }是一个空数组。

null会不会缺少一个数组。

他们不是一回事。

== 的问题在于它试图输入值以匹配它们。一个空数组是“假的”,就像null.

如果你想看区别,就用===instead,它不输入​​juggle,也比较type;

$array1 = null;
$array2 = array();
if ($array1 == null) echo '1';     // $array1 is "similar to" null.
if ($array1 === null) echo '2';    // $array1 is null
if ($array2 == null) echo '3';     // $array2 is "similar to" null
if ($array2 === null) echo '4';    // $array2 is null

>>> 123

更多关于比较运算符的信息

于 2013-07-28T17:55:19.550 回答