Сохранить врутренний указатель массива...

docker

Новичок
Сохранить врутренний указатель массива...

Добрый день
Можно как нибудь заменить ключ у массива, не меняя самого значения этого ключа?

И не удаляя этот элемент, и не меняя внутренню последовательность элементов...?

например, было $arr = array('1'=>"1", '666'=>"2", '3'=>"3",);

Надо сделать чтобы стало, например $arr = array('1'=>"1", '2'=>"2", '3'=>"3",);

Это конечно же можно сделать перебором значений и формированием нового массива, а как еще кто нибудь знает?
 

SelenIT

IT-лунатик :)
Если моя телепательная машинка работает, нужно что-то вроде [m]array_values[/m]?
 

agx

Программер :-)
А при чем здесь array_values? Или я что-то не так понял?
Товарищу надо ключ заменить, а не получить из ассоциативного массива простой. Тоесть, я понял так, что ключи могут быть не только цифрами. Или нет? Или просто пример неудачный?
 

albatros

Guest
я придумал вот так:
Изменяем ключ в массиве (общий случай):
$arr[$i]=$j;
$array_flip($arr);
$arr[$j]=$i2;
$array_flip($arr);

вроде все очевидно, так что не задавайте глупые вопросы, а по существу..:cool:
 

SelenIT

IT-лунатик :)
agx
Да вот товарищ куда-то пропал, так и не объяснив толком свою задачу. Из примера можно было предположить, что ему хотелось "перенумеровать" элементы по их порядку в массиве. Я не настаиваю, но ИМХО в любом случае ознакомление с массивными ф-циями лишним не будет...

albatros
а что, если значения не уникальны?
 

agx

Программер :-)
Но тут есть проблема, вдруг у него некоторые значения будут входить в массив несколько раз? Тогда информация будет потеряна. :)
 

albatros

Guest
да и правда, почему то это ускользнуло от меня..
тогда нужно перебрать массив на поиск вырожденности value
и создать новый массив для сохранения данных повторов.
а потом заново вернуть..
криво, конечно, но в случае массового использования оправдано..
 

docker

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

А то я делал unset, а потом добавлят с новым ключем - он естественно в конец добавлялся...

Получается 2 варианта -
1) перебор и формирование нового массива
2) небольшие манипуляции с array_flip
 

agx

Программер :-)
docker

Ну так albators предложил два выхода, так что выбор за тобой.
 

Фанат

oncle terrible
Команда форума
есь еще один вариант - избежать такой странной постановки задачи вовсе.
 
Сверху