2016-08-25 117 views
2

我需要刪除多維數組中的空項目。 有沒有簡單的方法可以輕鬆刪除空的物品? 我只需要保留2010-06和2010-07。從PHP中刪除多維數組中的項目

非常感謝!

Array 
(
    [2010-01] => Array 
     (
      [2010-03] => Array 
       (
        [0] => 
       ) 
      [2010-04] => Array 
       (
        [0] => 
       ) 
      [2010-06] => Array 
       (
        [0] => stdClass Object 
         (
          [data_test] => value 
          [date] => 2010-05-01 12:00:00 
         ) 

       ) 
      [2010-07] => Array 
       (
        [0] => stdClass Object 
         (
          [data_test] => value 
          [date] => 2010-05-01 12:00:00 
         ) 

       ) 
     ) 
) 
+2

的可能的複製[PHP:從多維數組中取出空數組元素( http://stackoverflow.com/questions/9895130/php-remove-empty-array-elements-from-a-multidimensional-array) – Epodax

+0

我試過這個解決方案,但它不適用於這個數組。它有更多的層次。 –

+0

嘗試使用array_filter().. – Jaimin

回答

1

試試這個函數。這將解決您的問題。

function cleanArray($array) 
{ 
    if (is_array($array)) 
    { 
     foreach ($array as $key => $sub_array) 
     { 
      $result = cleanArray($sub_array); 
      if ($result === false) 
      { 
       unset($array[$key]); 
      } 
      else 
      { 
       $array[$key] = $result; 
      } 
     } 
    } 

    if (empty($array)) 
    { 
     return false; 
    } 

    return $array; 
} 
0

array_filter不會與該陣列 工作堅持這樣試試這個自定義函數

<?php 
$array =array(
    20 => array(
     20 => array(
      0=> '' 
     ), 
     10 => array(
      0=> 'hey' 
     )  

    ) 
); 
function array_remove_empty($arr){ 
    $narr = array(); 
    while(list($key, $val) = each($arr)){ 
     if (is_array($val)){ 
      $val = array_remove_empty($val); 
      // does the result array contain anything? 
      if (count($val)!=0){ 
       // yes :-) 
       $narr[$key] = $val; 
      } 
     } 
     else { 
      if (trim($val) != ""){ 
       $narr[$key] = $val; 
      } 
     } 
    } 
    unset($arr); 
    return $narr; 
} 

print_r(array_remove_empty($array)); 
?> 

發現這個答案here