![]() |
|
||||||||||
|
|||||
|
на одном умном форуме прочел, что, чтобы стереть элементы массива, надо пользоваться unset();
<? $tmp[]="aaa"; $tmp[]="bbb"; $tmp[]="ccc"; echo "tmp_count_before_del = ".count($tmp)."<br>"; for($i=0;$i<count($tmp);$i++){ echo "tmp".$i." = ".$tmp[$i]."<br>"; } echo "<p>"; unset($tmp[0]); echo "tmp_count_after_del_first_elem = ".count($tmp)."<br>"; for($i=0;$i<count($tmp);$i++){ echo "tmp".$i." = ".$tmp[$i]."<br>"; } ?> я не настаиваю на прямоте своих рук, но что-то тут не так... count() уменьшился, а $tmp[0] то остался ![]() вообщем об чего бьюсь: for($c=0;$c<count($del);$c++){unset($all[$del[$c]]);}, где $del-массив нумеров эл-тов, нужных выкинуть из $all; |
|
|||||
|
А ты предполагаешь, что массив может начинаться не с нулевого элемента?
Мне кажется, ансет здесь аналогичен pop() изнутри, он вынимает (но не возвращает в отличие от попа) элемент, сокращая длину массива и перемещая все последующие элементы по массиву в сторону убывания индексов. А ты хочешь сделать, чтоб твой элемент был "недействителен" - тогда лучше делай просто присвоение ему заведомо невозможного значения. Тогда элемент сохранится, но при проверке его значение не будет воспринято.
__________________
suum quique |
|
|||||
|
[+1 23.05.11]
Регистрация: Dec 2001
Сообщений: 4,159
|
Я проверил приведенный выше код -- и обнаружил, что в нем unset сработал успешно и нулевой элемент стал пустым.
Версия PHP -- 4.2.1 BTW, второй цикл написан неверно... -- count дает число элементов, которое никак не кореллирует со ЗНАЧЕНИЯМИ индексов.
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++ |
|
|||||
|
Сэнкс, массив конечно начинается с нулевого...
Но мне надобно удалить сам элемент, не только его значение. Лекарство нашел - array_splice |
|
|||||
|
[+1 23.05.11]
Регистрация: Dec 2001
Сообщений: 4,159
|
Чем "сам элемент" отличается от "его значеия" в твоем восприятии?
![]() Может быть, ты имел в виду "удалить элемент так, чтобы изменились индексы следующих за ним элементов"?
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++ |
|
|||||
угу |
|
|||||
|
[+1 23.05.11]
Регистрация: Dec 2001
Сообщений: 4,159
|
В таком случае найденнное тобой решение действительно оптмально.
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++ |
![]() |
Часовой пояс GMT +4, время: 19:30. |
|
|
« Предыдущая тема | Следующая тема » |
|
|