Как удалить из массива 4 элемента, если они пустые?

Kood-Good

Новичок
Как удалить из массива 4 элемента, если они пустые?

народ, как удалить из массива 4 элемента, если они пустые?

вот пример

PHP:
$mass=Array ( [0] => [1] => [2] => [3] => [4] => next [5] => abc [6] => dfg )
как из этого массива удалить элементы 0,1,2 и 3?
 

Фанат

oncle terrible
Команда форума
в цикле перебрать массив, и сравнивать элементы с пустой строкой.
удалить элемент - unset
 

Фанат

oncle terrible
Команда форума
таким образом, кстати, можно удалить не только 4 элемента, но и 40. и даже 400
 

Kood-Good

Новичок
Автор оригинала: _RVK_
Kood-Goodа что такое next, abc, dfg ?
_RVK_, %) ну это имелись ввиду данные. условность просто )))
сложность была в том чтобы удалить именно 4 элемента, а не один. сделал. для потомков:
PHP:
for ($i=0;$i<sizeof($a);$i++){
 if (($a[$i]=='')&&($a[$i+1]=='')&&($a[$i+2]=='')&&($a[$i+3]=='')){  unset ($a[$i] , $a[$i+1] , $a[$i+2] , $a[$i+3]);
 ;}
всем спасибо
 

ns

Новичок
можно через foreach и unset

PHP:
foreach ($mass as $k=>$v){
	if(empty($v)) unset($mass[$k]);
}
или через array_diff для компактности

PHP:
array_diff($mass,array(''));
 

_RVK_

Новичок
for ($i=0;$i<sizeof($a);$i++){
if (($a[$i]=='')&&($a[$i+1]=='')&&($a[$i+2]=='')&&($a[$i+3]=='')){ unset ($a[$i] , $a[$i+1] , $a[$i+2] , $a[$i+3]);
;}
Поясни логику этого кода. Мой ум почему то не в состоянии её ухватить....
 

VBart

Новичок
Автор оригинала: Kood-Good
_RVK_, %) ну это имелись ввиду данные. условность просто )))
сложность была в том чтобы удалить именно 4 элемента, а не один. сделал. для потомков:
PHP:
for ($i=0;$i<sizeof($a);$i++){
 if (($a[$i]=='')&&($a[$i+1]=='')&&($a[$i+2]=='')&&($a[$i+3]=='')){  unset ($a[$i] , $a[$i+1] , $a[$i+2] , $a[$i+3]);
 ;}
всем спасибо
Наверно более ужасного кода для удаления четырех идущих подряд пустых элементов массива придумать сложно... После удаления, вы как минимум 6 раз обращаетесь к только что удаленным элементам.

-~{}~ 13.03.06 01:33:

Только почему-то мне кажется, что автору просто надо удалить все пустые элементы из массива...
 

Sluggard

Новичок
Наверно более ужасного кода для удаления четырех идущих подряд пустых элементов массива придумать сложно... После удаления, вы как минимум 6 раз обращаетесь к только что удаленным элементам.
Ах, если бы этот код хотя бы выполнял задачу...
Только почему-то мне кажется, что автору просто надо удалить все пустые элементы из массива...
Нет, ему надо именно подряд. Бывают всякие программисты, но мне не встречались такие, которым надо удалить один пустой элемент, а они городят
if (($a[$i]=='')&&($a[$i+1]=='')&&($a[$i+2]=='')&&($a[$i+3]==''))...
 

Kood-Good

Новичок
Автор оригинала: Sluggard
Ах, если бы этот код хотя бы выполнял задачу...

Нет, ему надо именно подряд. Бывают всякие программисты, но мне не встречались такие, которым надо удалить один пустой элемент, а они городят
а почему код не выполняет задачу? надо именно подряд, и не один пустой элемент. если ты говоришь о том, что скрипт ссылается на удаленные строки, то можно добавить в цикл $i=i$+4 и все нормально. скрипт работает как надо.
 

Kood-Good

Новичок
Sluggard
ну о каких ошибках идет речь? скрипт работает, удаляет все как и задумано. неужели не понятно, что i$ - опечатка?

сколько не искал ошибки в
for ($i=0;$i<sizeof($a);$i++)
- не нашел. их не может здесь быть.
 

Фанат

oncle terrible
Команда форума
Браво, Sluggard!
единственный, кто заметил этот очень серьёзный косяк!
 

kost

Новичок
Kood-Good
Спасибо огромное что убили на 5 минут больше моего времени. Пожалуйста, не делайте больше так. Я долго не мог понять, где там у вас $i=i$+4. Я так понял, что там, где сейчас два символа ';' подряд ;)
 

Фанат

oncle terrible
Команда форума
Kood-Good
Эта ошибка не синтаксическая, а алгоритмическая
 
Сверху