2015-11-06 25 views
0

$data是多維數組,這個數組包含不同類型的值在濾鏡陣列,如何讓系統允許0

numbercharacterfloatempty的,Boolean

在這裏,我想,只過濾出空,但下面的函數過濾0,也是false,請提供一個快速解決方案。

$data = array_map('array_filter',$data); 

$data = array_filter($data,function($a){return $a!='';}); 

上面這兩個樣品都沒有滿滿的要求。

array ('school'=>array('key1'=>abc,'key2'=>1,'key3'=>0,'key4'=>,'key5'=>false)) 
+0

要小心'!='和'!==' – Ghost

+0

你能告訴我你的數組嗎? –

+0

嘗試'$ myarray = array_filter($ myarray,'strlen');' –

回答

1

簡單地代替$data嘗試以$data['school']

$data['school'] = array_filter($data['school'], function($a) { 
    return $a != ''; 
}); 
1
$data = array_filter($data,function($a){return ($a!=='' && is_null($a)===false);}); 
+0

你是正確的使用triple(!==),但它看起來像他也想刪除NULL。也許我錯了,但'key4'似乎是這裏的目標。 – Christian

+0

我也添加了檢查null,自從我的回答 – Paladin

+0

[Not Working](https://3v4l.org/LgmJU)以來,對主要帖子進行了大量修改。 –

0

使用自定義功能,因爲本地的PHP函數會將 '0' 和 '假' 爲空:

function array_non_empty_items($input) { 
    // If it is an element, then just return it. 
    if (!is_array($input)) { 
     return $input; 
    } 

    $non_empty_items = array(); 

    foreach ($input as $key => $value) { 
     // Ignore empty cells 
     if($value !== '') { 
      // Use recursion to evaluate cells. 
      $non_empty_items[$key] = array_non_empty_items($value); 
     } 
    } 

    // Finally returns the array without empty items. 
    return $non_empty_items; 
}