2013-07-28 82 views
2

我相信我測試的數組是空的。即使做var_dump(array)打印array(0) { }PHPUnit assertNull()測試失敗

但測試$this->assertNull($array);失敗。
相反當我測試下面的代碼進入if條件:

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

我不明白爲什麼會這樣。請解釋我是否有人知道原因。

回答

4

array(0) { }是一個空數組。

null會缺少一個數組。

他們不是一回事。

==的問題是,它試圖打亂值來匹配它們。一個空陣列是「虛假」,如null

如果你想看到不同之處,可以用===代替,它不會打字,也可以比較類型;

$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 

More on the comparison operators here

+0

那麼爲什麼'if($ array == null)'得到滿足。 – Geek

+2

因爲它是類型化的值來比較它們。嘗試使用'$ array === null''。看看http://www.php.net/manual/en/types.comparisons.php,看看PHP比較什麼。 – Sven

+0

謝謝你的例子和解釋。 – Geek

相關問題