Удаление элементов из массива

Line

Google, Co.
Удаление элементов из массива

Столкнулся со сложностью удаления элементов из массива и его пересчетом. Приминительно к реализации "корзины" в системе заказа Интернет-магазина.

Какие методы есть удаления n-го элемента массива и перенос "вверх" оставшихся?

Спасибо
 

Фанат

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

Line

Google, Co.
Фанат

Ваши предложения с радостью послушаю и научусь работать с массивами наконец.
Спасибо
 

Фанат

oncle terrible
Команда форума
задай вопрос - я с удовольствием на него отвечу
 

Line

Google, Co.
Tor
Есть к примеру 30 выбранных позиций, их ID занесены в массив сессии, так вот если при удалении одного их элементов этого массива, все оставшиеся элементы должны подняться "вверх" и их общее количество буде уже 29.

Может какие-то стандартные методы есть?
Чтобы не изобретать велосипед.
Спасибо
 

ybilevych

Новичок
Line
Вам следует ОБЯЗАТЕЛЬНО прочитать, как работают массивы в PHP. Очевидно, Вы пришли в PHP из C или что-то вроде этого.

Для перебора элементов массива Вы можете использовать [m]foreach[/m].
 

Фанат

oncle terrible
Команда форума
не, не форич.
кажется, до меня дошло.
по ходу, чувак не догоняет про count
 

ybilevych

Новичок
Да я думаю, что все вышесказанное нужно.
Просто тредстартеру нужно разжевать, что:
1. для удаления элемента массива использовать [m]unset[/m]
2. Для перебора всех элементов массива использовать [m]foreach[/m]
3. Для получения количества элементов в массиве использовать [m]count[/m]
И вообще, ОБЯЗАТЕЛЬНО прочитать раздел Arrays в доке по PHP. Там все подробно, с примерами объяснено
 

Фанат

oncle terrible
Команда форума
но лучше это сделать ПОСЛЕ того, как он задаст конкретный вопрос. напишет - что у него не получается.
а не выдавать этот поток сознания по результатам телепатических экспериментов на основе бесмысленного вопроса
 

Фанат

oncle terrible
Команда форума
конкретно от этого клиента - почти нереально
в частности и потому, что ему нет нужды учиться по-человечески выражать свои мысли - всегда найдётся выскочка вроде тебя.
 

whirlwind

TDD infected, paranoid
фича в том, что PHP массив это нифига не массив а хэш или ассоциативный массив
PHP:
$a = array('a','b','c');
unset($a[1]);
var_dump($a);
нормальный массив сместил бы на индекс 1 значение 'c'. Как видим в этом случае индекс для 'c' остался прежним - 2. Если мы начнем перебирать опираясь на т.н. индексы
PHP:
for ($i = 0;$i < count($a); $i++){
   ...
}
до элемента с ключом 2 мы естессно не доберемся. Это неудобство обходится элементарным $a = array_values($a) после unset на элемент. и не нужно говорить про форыч, не всегда его можно использовать (например для объекта итератора когда между обращениями вызов(ы) метода(ов)).
 

Фанат

oncle terrible
Команда форума
whirlwind
попробуй спросить, что аффтар понял из твоей прочувствованной речи ;-)
 

whirlwind

TDD infected, paranoid
хм... ну да, в некоторых местах можно еще по предложению вставить, для ясности :) непонятно будет - спросит.
 

Фанат

oncle terrible
Команда форума
нет, дело не в предложениях. дело в понятиях.
это как в анекдоте - Папа, ты с кем сейчас разговаривал?
=)
 

zerkms

TDD infected
Команда форума
нормальный массив
а критерий "нормальности" массива где можно посмотреть? и в каком собственно ЯП после удаления элемента массива магическим образом остальные будут сдвинуты?
например для объекта итератора когда между обращениями вызов(ы) метода(ов)
звучит страшно непонятно, цель - запутать общественность ты достиг ;)
 

whirlwind

TDD infected, paranoid
>а критерий "нормальности" массива где можно посмотреть?

ru.wikipedia.org/wiki/Индексный_массив

>и в каком собственно ЯП после удаления элемента массива магическим образом остальные будут сдвинуты?

PHP:
#!/bin/perl -w
@a = ('a','b','c');
shift(@a);
print join(",",@a);
>звучит страшно непонятно, цель - запутать общественность ты достиг

Так понятнее?
PHP:
class Iterator {
   private $rows = array();
   private $index = 0;

   function value(){
       return $this->rows[$this->index];
   }

   function next(){
       $this->index ++;
   }

}
Еще скажи что программист, который приписал себе TDD Infected не понимает разницу между массивом и хэшем.
 
Сверху