Форумы портала PHP.SU » Разное » Обсуждение статей » удалить из массива NULL-ы

Страниц (1): [1]
 

1. DlTA - 08 Февраля, 2013 - 15:00:19 - перейти к сообщению
есть массив
$a = array(
'a'=>1
,'b'=>2
,'c'=>array('e'=>NULL, 'f'=>2)
,'d'=>4
)
и хотелось бы после обработки получить без null
$a = array(
'a'=>1
,'c'=>array('f'=>2)
,'d'=>4
)

подается только переменная массив, его мы не формируем, он нам подается сформированный

если же быть более честным, то нужно просто удалить от какого то конкретного звина.

предложения?
2. EuGen - 08 Февраля, 2013 - 15:18:56 - перейти к сообщению
Например,
PHP:
скопировать код в буфер обмена
  1. $fnWalk = function(&$rgInput) use (&$fnWalk)
  2. {
  3.     foreach($rgInput as $mKey => $mValue)
  4.     {
  5.         if(is_array($mValue))
  6.         {
  7.            $rgInput[$mKey] = $fnWalk($mValue);
  8.         }
  9.         elseif(!isset($mValue))
  10.         {
  11.            unset($rgInput[$mKey]);
  12.         }
  13.     }
  14.     return $rgInput;
  15. };
  16.  
  17. $rgData = array(
  18. 'a'=>1
  19. ,'b'=>2
  20. ,'c'=>array('e'=>NULL, 'f'=>2)
  21. ,'d'=>4
  22. ,'g'=>null
  23. );
  24.  
  25. $rgData = $fnWalk($rgData);
  26. //var_dump($rgData);

- от обычной рекурсии отошел в силу неясности фразы о "звине". Подозреваю, что пригодится некий callback (добавить который в пример выше очень просто).

 

Powered by ExBB FM 1.0 RC1