2013-02-07 100 views
1

我想知道是否有內置或更好的方法來測試數組的所有元素是否爲空。確定PHP函數是否爲數組中的所有元素爲空

這裏是我的(工作)解決方案:

<?php 
    function cr_isnull($data_array){  
     foreach($data_array as $value){ 
      if(!is_null($value)){return false;} 
     } 
    return true; 
    } 
?> 

說明:

  • 如果函數發現不爲空它 返回false陣列中的任何值,否則後「循環」通過所有的數組 元素它返回true。

我不能使用empty(),因爲我的空的定義不適合PHP的定義。

任何想法,還是我很高興與我有什麼?

回答

5
count(array_filter($myarray,'is_null')) == count($myarray); 

OR

array_reduce($myarray, 
      function($result,$value) { 
       return $result && is_null($value); 
      }, 
      TRUE 
); 
+0

可能不需要第二個'計數()',OP只是想看看是否所有的值都是'null'與否。 – nickb

+0

@nickb - 那麼它會如何測試過濾器是否返回所有原始值或沒有計數?使用array_reduce()可以消除count()的需要 –

+0

如果它是一個包含所有null值的數組,array_filter()將返回一個包含零元素的數組。將它與'0'比較,如果它是真的,則原始數組全部爲空,否則它不是。 – nickb