![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 23.07.2012
Сообщений: 7
|
![]()
Упрощенная ситуация:
Предположим у меня массив $a = array(1,2,3,4,5,6); И есть ссылка на конкретный элемент, например $b =& $a[3]; Необходимо удалить элемент использую ссылку($b) на элемент т.е. типа unset($b), но unset() рвет связь а не удаляет элемент Существует ли возможность в PHP? |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
![]() PHP код:
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 23.07.2012
Сообщений: 7
|
![]()
Спасибо.
Но, боюсь, я сильно упростил исходную ситуацию...( Массив на самом деле не линейный и переменная $b может ссылаться на элемент на различной "глубине". $a = array(1=>array(1=>array(1=>'a',2=>' b'),2=>'c'),2=>2); print_r($a); $b =& $a[1][1][2]; // == "b" unset($a[array_search($b, $a)]); // в такой ситуации уже не катит print_r($a); |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
![]()
Не совсем понятна общая ситуация:
$b =& $a[1][1][2]; – это ж хардкод, я так понимаю? Почему тогда нельзя просто прописать: unset($a[1][1][2]); ? По какому принципу формируется ссылка? |
![]() |
![]() |
![]() |
#5 |
Регистрация: 23.07.2012
Сообщений: 7
|
![]()
В принципе теперь я понимаю что попал на хардкор..
Поискал в интернете - ничего не нашел( Смотрел в сторону array_walk_recursive(), но понял так что она(т.е с её помощью) тоже не может удалять элементы так как там тоже в обрабатывающую функцию переменные по ссылкам $key $value идут. $input = "1>>1>>2"; $input = explode(">>", "1>>1>>2"); // притом что циферки могут быть буковками $b= & $a; // $a это как раз тот массив foreach( $input as $i) $b =& $b[$i]; echo $b; // == "b"; |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
![]()
Не вижу пока другого способа решить это – кроме использования eval:
PHP код:
|
![]() |
![]() |
![]() |
#7 |
Регистрация: 23.07.2012
Сообщений: 7
|
![]()
Дело закончилось так:
PHP код:
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как удалить элемент массива? | БалаШагаЛ | PHP | 1 | 28.01.2012 20:46 |
Как удалить(добавить) элемент массива? | vanek1 | Помощь студентам | 3 | 15.12.2010 22:26 |
удалить элемент из массива | dron-k | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 17.09.2010 17:46 |
Как удалить\добавить элемент массива с++ | Sanu0074 | Помощь студентам | 3 | 15.06.2010 11:53 |
Удалить элемент массива | pavel42 | Помощь студентам | 14 | 21.05.2009 08:52 |