2012-06-07 65 views
3

我有以下陣列:測試空巢陣列

array(4) { 
    [29] => NULL 
    [31] => NULL 
    [33] => NULL 
    [35] => NULL 
} 

我想測試所有按鍵,如果所有的鍵包含空值。

回答

3
if(count(array_filter($input, 'is_null')) == count($input)) { 

} 

應該是你在找什麼:)

2
// need php version >= 5.3 or you need to define a function, or just use a loop to check. 
if (!count(array_filter($your_array, function($var){return $var !== null}))) { 
    // all values is null. 
} 
+0

我很好奇,不過,一直以來我以爲你可以」除了變量之外,任何東西都可以傳遞給'empty',這是否允許,因爲'php> = 5.3?' –

+0

@SiGanteng是的,我忘記了。你只能傳遞一個變量。 Thx指出它。 – xdazz

0

的超級簡單的方法:

function allNULL($array){ 
    foreach($array as $i) 
    if($i!=null) 
    return FALSE; 
    return TRUE; 
} 
+0

'array(0,0,0,null)'如果不是所有的鍵都包含null,將會失敗 –

+0

,這是失敗的。這就是他問 – CosminO

+1

你的代碼雖然在做'if($ i)'。所以如果我做'array(null,null,null)',它應該在它應該是true時返回false。但是我看到你從此改變了它。所以永遠不要:) –

0
<?php 
    $filternull = function($value) { 
     return $value !== null; 
    } 

    $remaining = array_filter($yourarray, $filternull); 

    echo count($remaining); 
    // === 0, if all were "null"; 
?> 
+0

應該是'$ value!== null'爲您的過濾器功能。 – xdazz

+0

@xdazz你是對的。 –