Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: удалить из массива NULL-ы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: в тему о задачках
DlTA
Отправлено: 08 Февраля, 2013 - 15:00:19
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




есть массив
$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
)

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

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

предложения?
 
 Top
EuGen Администратор
Отправлено: 08 Февраля, 2013 - 15:18:56
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Например,
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 (добавить который в пример выше очень просто).


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Обсуждение статей »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB