2011-06-30 39 views
0

から空の配列値を削除するとが必要です、私は、多次元配列を持っており、彼らは(も、0に設定)、空なら私は値を削除する必要があります。ここに私の配列です:は誰もが私を助けることができれば、私は思っていた多次元配列

Array 
(
    [83] => Array 
     (
      [ctns] => 0 
      [units] => 1 
     ) 

    [244] => Array 
     (
      [ctns] => 0 
      [units] => 0 
     ) 

    [594] => Array 
     (
      [ctns] => 0 
     ) 

) 

そして私だけが残されたい:誰もが素晴らしいだろうと、私を助けることができれば

Array 
(
    [83] => Array 
     (
      [units] => 1 
     ) 

) 

! :)

答えて

1

これはあなたを助ける:

Remove empty items from a multidimensional array in PHP

編集:あなたは、ツリートラバーサルを必要とするよう

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 
     $items = array_non_empty_items($value); 
     if($items) 
      $non_empty_items[$key] = $items; 
     } 
    } 

    // Finally return the array without empty items 
    if (count($non_empty_items) > 0) 
     return $non_empty_items; 
    else 
     return false; 
    } 
+0

葉私は、そのいずれかを試してみましたしかし、私はそれが動作するために必要な方法ではうまく動作しません。例えば。アレイ([244] =>アレイ()) – SoulieBaby

+1

@SoulieBabyはそれをテストしていないが、あなたが解決策に素晴らしい作品:)そんなに –

+0

感謝を見つける必要があります...あなたの要件に合うように、ソースコードを編集しました! – SoulieBaby

1

が見える:

function remove_empties(array &$arr) 
{ 
    $removals = array(); 
    foreach($arr as $key => &$value) 
    { 
     if(is_array($value)) 
     { 
       remove_empties($value); // SICP would be so proud! 
       if(!count($value)) $removals[] = $key; 
     } 
     elseif(!$value) $removals[] = $key; 
    } 
    foreach($removals as $remove) 
    { 
     unset($arr[ $remove ]); 
    } 
} 
関連する問題