Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Программирование > PHP

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 16.08.2002, 20:11
Papa Karlo вне форума Посмотреть профиль Отправить личное сообщение для Papa Karlo Найти все сообщения от Papa Karlo
  № 1  
Papa Karlo
 
Аватар для Papa Karlo

Регистрация: Jan 2002
Сообщений: 480
Отправить сообщение для Papa Karlo с помощью ICQ
По умолчанию delete array elements

на одном умном форуме прочел, что, чтобы стереть элементы массива, надо пользоваться 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;

Старый 18.08.2002, 03:16
RFMitrio вне форума Посмотреть профиль Отправить личное сообщение для RFMitrio Посетить домашнюю страницу RFMitrio Найти все сообщения от RFMitrio
  № 2  
RFMitrio
 
Аватар для RFMitrio

Регистрация: Aug 2001
Адрес: город на Неве
Сообщений: 1,908
Отправить сообщение для RFMitrio с помощью ICQ
А ты предполагаешь, что массив может начинаться не с нулевого элемента? Мне кажется, ансет здесь аналогичен pop() изнутри, он вынимает (но не возвращает в отличие от попа) элемент, сокращая длину массива и перемещая все последующие элементы по массиву в сторону убывания индексов. А ты хочешь сделать, чтоб твой элемент был "недействителен" - тогда лучше делай просто присвоение ему заведомо невозможного значения. Тогда элемент сохранится, но при проверке его значение не будет воспринято.
__________________
suum quique

Старый 18.08.2002, 04:17
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 3  
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: 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++

Старый 19.08.2002, 11:05
Papa Karlo вне форума Посмотреть профиль Отправить личное сообщение для Papa Karlo Найти все сообщения от Papa Karlo
  № 4  
Papa Karlo
 
Аватар для Papa Karlo

Регистрация: Jan 2002
Сообщений: 480
Отправить сообщение для Papa Karlo с помощью ICQ
Сэнкс, массив конечно начинается с нулевого...
Но мне надобно удалить сам элемент, не только его значение.
Лекарство нашел - array_splice

Старый 19.08.2002, 11:25
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 5  
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: 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++

Старый 19.08.2002, 11:32
Papa Karlo вне форума Посмотреть профиль Отправить личное сообщение для Papa Karlo Найти все сообщения от Papa Karlo
  № 6  
Papa Karlo
 
Аватар для Papa Karlo

Регистрация: Jan 2002
Сообщений: 480
Отправить сообщение для Papa Karlo с помощью ICQ

угу

Старый 19.08.2002, 13:41
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 7  
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: 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, время: 20:17.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 20:17.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.