killer8080
4.01.2013 - 19:51
или так
$articles = array_filter(array_map('array_filter', $articles));
andrey888
4.01.2013 - 19:52
а если явно будем удалять ?
foreach($articles as $item){
foreach($item as $name){
if($name==''){ unset($item[$name]); }
}
}
_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
killer8080
4.01.2013 - 19:56
Цитата (andrey888 @ 4.01.2013 - 17:52) |
а если явно будем удалять ?
foreach($articles as $item){ foreach($item as $name){ if($name==''){ unset($item[$name]); } } }
|
а мой вариант не проще ;)
andrey888
потому что foreach оперирует с внутренним указателем исходного массива, если вы будете удалять из него елементы, то поведение foreach может быть не предсказуемым
_____________
Чтобы понять, что такое рекурсия - нужно понять, что такое рекурсия.
andrey888тогда так
foreach($articles as &$item){
foreach($item as $name){
if($name==''){ unset($item[$name]); }
}
}
и не забыть
unset($item);
_____________
Чтобы понять, что такое рекурсия - нужно понять, что такое рекурсия.
andrey888
4.01.2013 - 20:00
killer8080
Цитата |
а мой вариант не проще |
Намного!
хотел подробнее узнать.. не знал что через foreach не рекомендуется удалять элементы.
tomashСпасибо, Thank u, Тода раба )
_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
killer8080
4.01.2013 - 20:03
в принципе его можно еще сократить, если в исходном массиве нет пустых элементов
$articles = array_map('array_filter', $articles);
andrey888
4.01.2013 - 20:04
Цитата |
andrey888 тогда так
foreach($articles as &$item){ foreach($item as $name){ if($name==''){ unset($item[$name]); } } }
|
"&" то есть мы только ссылаемся на этот эелемент ?
_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
killer8080
4.01.2013 - 20:06
Цитата (tomash @ 4.01.2013 - 17:58) |
foreach($articles as &$item){ foreach($item as $name){ if($name==''){ unset($item[$name]); } } } |
не будет работать
andrey888
4.01.2013 - 20:06
killer8080
КРУТО.
Век живи век учись ) я дажить и не духом про эту функцию )
_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
ммм... нет мы присваиваем по ссылке, и получаем доступ к исходному элементу массива, а не к его копии
_____________
Чтобы понять, что такое рекурсия - нужно понять, что такое рекурсия.
killer8080
foreach($articles as $key => $item){
foreach($item as $name => $value){
if($value == ''){ unset($articles[$key][$name]); }
}
}
Я про сам foreach говорил, то что этот способ не годиться это правда
_____________
Чтобы понять, что такое рекурсия - нужно понять, что такое рекурсия.
livephp
4.01.2013 - 20:21
kawwВаш пример ничего не выводит
killer8080Как все легко и просто
Уже который раз ваш форум не подводит !
Спасибо вам и всем кто мне помог !
killer8080
4.01.2013 - 20:24
tomashзачем такие сложности
foreach($articles as &$item){
foreach($item as $key => $value){
if(empty($value))
unset($item[$key]);
}
}
unset($item);
но работать циклом оправдано лишь на больших массивах, иначе проще array_ функции
killer8080
проще
_____________
Чтобы понять, что такое рекурсия - нужно понять, что такое рекурсия.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.