Замена индекса в массиве

samokspv

Новичок
Например, есть массив:
PHP:
$envarray=array(
  'a' => 'test1',
  'b' => 'test2',
  'с' => 'test3',
  'd' => 'test4'
);
нужно заменить индекс 'b' на 'x', но чтобы остался прежний порядок ключей / значений

Возможно так:
- два раза array_flip:
PHP:
$envarray = array_flip($envarray);
$envarray['test2'] = 'x';
$envarray = array_flip($envarray);
- собрать индексы, заменить индекс, собрать значения, и создать новый массив:
PHP:
$eKeys = array_keys($envarray);
$eKeys[1] = 'x';
$eVals = array_values($envarray);
$envarray = array_combine($eKeys, $eVals);
Подскажите, есть ли более простое решение (хотя возможно проще уже некуда) или универсальная фун-ция?
 

eax

#
Можно добавить индекс с нужным значением, а старый индекс через unset()
 

С.

Продвинутый новичок
eax,"неадекват" это потому что отвечаешь, не читая вопрос?
 

eax

#
Нет... Причина то, что я сейчас предложу написать класс с интерфейсами ArrayAccess и Iterator который будет содержать массив с целочисленными индексами содержащий ассоциативные ключи от основного массива, и дописать хитрую функцию, которая будет менять ключ. А вообще не допытывайтесь, это просто невнимательность. Мало сплю, много пью..
 

samokspv

Новичок
Ясно, ну главное я удостоверился в том что нет. Cпасибо, за участие, можно закрывать.
Заюзал два раза флип, так как там хоть можно в дальнейшем сортировать индексы/значения и от этого не сломается замена, в отличии от второго варианта с обязаловкой указания цифро индекса для замены.

нету.. как думаешь почему?
Кстати, понятия не имею(

P.S. про интерфейсы улыбнуло =)
 

samokspv

Новичок
потому что если тебе это нужно, то, скорее всего, ты что-то делаешь не так
была такая мысль, но я в данный момент поддержую проект, и там уже была такая реализация, чтоб разрулить написаное нужно так вот 'костылировать' чтоб быстрей решить вопрос.
 

WMix

герр M:)ller
Партнер клуба
обрати внимание
array_flip(array_flip( array('test','test') )) дает результат array('test') те 1 елемент исчез
если так уж нужно, незнаю конечно зачем, но думаю складываешь 2 различных компонента, куда руками лазать неохота, то голым циклом в котором создается новый масив!
и там уже была такая реализация
зато теперь реализация явно улучшилась!
 
Сверху