Нужна помощь с удалением пустых значений массива из многомерного массива - PullRequest
0 голосов
/ 30 июня 2011

Мне было интересно, может ли кто-нибудь помочь мне, у меня есть многомерный массив, и мне нужно удалить значения, если они пусты (ну, установите на 0). Вот мой массив:

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

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

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

)

И я хочу остаться только с:

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

)

Если бы кто-нибудь мог мне помочь, это было бы здорово! :)

Ответы [ 2 ]

1 голос
/ 30 июня 2011

Похоже, вам нужен обход дерева:

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 ] );
    }
}
1 голос
/ 30 июня 2011

вам это поможет:

Удаление пустых элементов из многомерного массива в 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;
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...