[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Массивы.
Страницы: 1, 2, 3
killer8080
или так
$articles = array_filter(array_map('array_filter', $articles));
andrey888
а если явно будем удалять ?

foreach($articles as $item){
foreach($item as $name){
if($name==''){ unset($item[$name]); }
}
}



_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
killer8080
Цитата (andrey888 @ 4.01.2013 - 17:52)
а если явно будем удалять ?

foreach($articles as $item){
foreach($item as $name){
  if($name==''){ unset($item[$name]); }
  }
}


а мой вариант не проще ;)
tomash
andrey888
потому что foreach оперирует с внутренним указателем исходного массива, если вы будете удалять из него елементы, то поведение foreach может быть не предсказуемым

_____________
Чтобы понять, что такое рекурсия - нужно понять, что такое рекурсия.
tomash
andrey888
тогда так
foreach($articles as &$item){
foreach($item as $name){
if($name==''){ unset($item[$name]); }
}
}


и не забыть

unset($item);


_____________
Чтобы понять, что такое рекурсия - нужно понять, что такое рекурсия.
andrey888
killer8080
Цитата
а мой вариант не проще wink.gif

Намного! smile.gif хотел подробнее узнать.. не знал что через foreach не рекомендуется удалять элементы.
tomash
Спасибо, Thank u, Тода раба )


_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
killer8080
в принципе его можно еще сократить, если в исходном массиве нет пустых элементов
$articles = array_map('array_filter', $articles);
andrey888
Цитата


andrey888
тогда так

foreach($articles as &$item){
foreach($item as $name){
  if($name==''){ unset($item[$name]); }
  }
}



"&" то есть мы только ссылаемся на этот эелемент ?

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
killer8080
Цитата (tomash @ 4.01.2013 - 17:58)
foreach($articles as &$item){
foreach($item as $name){
  if($name==''){ unset($item[$name]); }
  }
}

не будет работать
andrey888
killer8080
КРУТО.
Век живи век учись ) я дажить и не духом про эту функцию )

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
tomash
ммм... нет мы присваиваем по ссылке, и получаем доступ к исходному элементу массива, а не к его копии

_____________
Чтобы понять, что такое рекурсия - нужно понять, что такое рекурсия.
tomash
killer8080

foreach($articles as $key => $item){
foreach($item as $name => $value){
if($value == ''){ unset($articles[$key][$name]); }
}
}


Я про сам foreach говорил, то что этот способ не годиться это правда

_____________
Чтобы понять, что такое рекурсия - нужно понять, что такое рекурсия.
livephp
kaww
Ваш пример ничего не выводит sad.gif
killer8080
Как все легко и просто
Уже который раз ваш форум не подводит !
Спасибо вам и всем кто мне помог !
killer8080
tomash
зачем такие сложности
foreach($articles as &$item){
foreach($item as $key => $value){
if(empty($value))
unset($item[$key]);
}
}

// само собой не забываем разлинковать ссылку :)
unset($item);

но работать циклом оправдано лишь на больших массивах, иначе проще array_ функции
tomash
killer8080
проще

_____________
Чтобы понять, что такое рекурсия - нужно понять, что такое рекурсия.
Быстрый ответ:

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