Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> удаление элемента массива с смещеннием иднекса, есть ли подобная функция? 
:(
    Опции темы
fuckerok
Дата 26.8.2005, 05:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 30.3.2004
Где: спб

Репутация: нет
Всего: нет



Сабж есть ли подобная функция? Или прийдётся перебирать массив.

Что требуется:
Есть массив из пяти елеметнов:
$ar[]="1";
$ar[]="2";
$ar[]="3";
$ar[]="4";
$ar[]="5";

Допусти надо удалить 3 элемент unset($ar[2]); но в тогда будет "выколотый элемент".
Я хочу чтобы после удаления 3-его элемента индиксы смещались (чтобы небыло выколотово элемента)
Порядок важен. Так что заменить удаляемый элемент на последний элемент массива, а затем удалить последний не получится smile
--------------------
PM MAIL ICQ   Вверх
Phantom1
Дата 26.8.2005, 07:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 25.7.2005

Репутация: 1
Всего: 2



может это поможет array_splice()
PM MAIL   Вверх
IZ@TOP
Дата 26.8.2005, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Ну или в крайнем случае:
Код

// ...

unset($myArray[32]);
$myArray = array_values($myArray);

// ...



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
-=Ustas=-
Дата 26.8.2005, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



А можно и в цикле восстановить индексы...


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
-=Ustas=-
Дата 26.8.2005, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



Например так:
Код

function ArrayIndex($array)
{
    $i = 0;
    foreach ($array as $value) {
        $arrayIndex[$i] = $value;
        $i++;
    }
    return $arrayIndex;
}

, но лучше наверное array_values().


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
fuckerok
Дата 27.8.2005, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 30.3.2004
Где: спб

Репутация: нет
Всего: нет



Пасибо.
--------------------
PM MAIL ICQ   Вверх
G0rinich
Дата 18.9.2006, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 21.8.2006

Репутация: 1
Всего: 1



Цитата(Phantom1 @  26.8.2005,  07:19 Найти цитируемый пост)
может это поможет array_splice() 


Конечно поможет!

Функция вернет указанный диапазон значений массива, причем удалит этот диапазон из исходного массива, сохранив порядок индексов.

Код

array_splice($arr, номер_элемента, 1);

Этот код удалит из массива элемент с указанным номером.
Тут несколько плюсов. 
Во первых код меньше и никаких лишних действий.
Значения будут удалены прямо из памяти. (Ведь массив в РНР это по сути список, и при вызове этой функции логично разбить этот список на два и поменять в нем связи. При этом не будут производиться операции по выделению или освобождению памяти. А новой переменной будет присвоен не новый массив, а указатель на кусок списка, который был вырезан из исходного нашей функцией. Если в РНР это реализовано не так, то разработчики данного языка не достойны называться профессионалами!)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0995 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.