[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Очищаем многомерный массив
Страницы: 1, 2
kristall
Колбек тут не обязателен. Пустые элементы масива сами по себе возвращают false.


$myArray = [22, true, '', ['string', false], true];

function array_filter_recursive($myArray)
{
foreach ($myArray as &$value){
if (is_array($value))
$value = array_filter_recursive($value);
}
return array_filter($myArray);
}

echo '<pre>', print_r(array_filter_recursive($myArray), 1);


Возвращает:

Array
(
[0] => 22
[1] => 1
[3] => Array
(
[0] => string
)

[4] => 1
)


_____________
echo '<pre>',print_r($var, 1);die;

root@server# make love && war
volter9
kristall
Хм, очень странно, вчера, мне твоя функция выдавала ошибку, а сегодня нет. Ладно, не знал. Спасибо за поправку!

P.S.: ТС просил не убивать null'и, вот почему я добавил замыкание

_____________
Мой блог
FatCat
Цитата (Kusss @ 21.01.2015 - 16:49)
нужно для упрощения кода

Пожалуйста
<?php
$array = Array (
'25' => Array ( '46' => '46', '0' => '0', '50' => '50', '70' => '' ),
'19' => Array ( '18' => '18', '0' => '0', '133' => '133', '134' => '134' ),
'29' => Array ( ),
'90' => '',
'33' => Array ( '90' => '' ),
'36' => Array ( '90' => '90', '0' => '0', '91' => '91', '92' => '92', '93' => '93' ),
'43' => Array ( '144' => '144', '0' => '0', '146' => '146', '147' => '147' )
);


function clean_arr($arr){
foreach($arr as $k=>$v)
{
if(is_array($v))
{
if(!count($v))
{
unset($arr[ $k ]);
}
else
{
$arr[ $k ] = clean_arr($v);
if(!count($arr[ $k ]))unset($arr[ $k ]);
}
}

else
{
if($v !== '0' and !$v)unset($arr[ $k ]);
}
}


return $arr;
}
$array = clean_arr($array);
echo("<pre>");print_r($array);echo("</pre>");die();
?>



Цитата (Kusss @ 21.01.2015 - 16:49)
Приходит 2-мерный массив

Хоть 500-мерный.

_____________
Бесплатному сыру в дырки не заглядывают...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.