Как заменить ключ в массиве php
"замена ключа массива php" или "Как заменить ключ в массиве php". На самом деле - заменить ключ в массиве очень просто!
Но вот с какой проблемой мы столкнемся... что порядок массива будет нарушен! Что ж... и эту проблемку я тоже покажу как решить! С примерами!
Подробно о замене ключа в массиве.
Заменим ключ в массиве.
Здесь немного нужно сказать о теории...
Нет такого .. простого способа или функции, которая возьмет и заменит ключ, именно ключ, имя ключа на другое. Просто нет и все...
Поэтому требуется несколько телодвижений...
Алгоритм замены ключа, имени ключа
(далее просто "замена ключа".)
Нам потребуется получить значение ячейки старого ключа, который мы хотим изменить, переименовать. Присвоить новому ключу значение старого ключа.
После того, как новый ключ создан со значением старого ключа . У нас получиться, что есть две ячейки с одинаковыми значениями, но два ключа, "старый ключ" и "новый ключ".
Следующим шагом - мы спокойно можем удалить старый ключ.
Пример замены ключа в массиве:
Для иллюстрации нам понадобится массив:
Выведем прямо здесь с помощью print_r:
Результат:
Array(
[0] => Ячейка 1
[1] => Ячейка 2
[2] => Ячейка 3
[3] => Ячейка 4
)
Предположим, что мы хотим заменить ключ второй ячейки, ключ №1.
Опять выведем, что у нас получилось - print_r($array_example);
Array(
[0] => Ячейка 1
[1] => Ячейка 2
[2] => Ячейка 3
[3] => Ячейка 4
[4] => Ячейка 2
)
Для удаления строго ключа нам потребуется функция unset:
Мы заменили ключ!
Результат замены ключа в массиве.
Array(
[0] => Ячейка 1
[2] => Ячейка 3
[3] => Ячейка 4
[4] => Ячейка 2
)
Вывод о замене ключа:
Что мы здесь наблюдаем?
При такой замене имени ключа, нарушается нумерация ключей. Теперь нам нужно(если нужно) восстановить нумерацию ключейArray(
[0] => Ячейка 1
[1] => Ячейка 3
[2] => Ячейка 4
[3] => Ячейка 2
)
Замена ключа без изменения положения ключа.
Но, что, если вам требуется сохранить положение ключа в массиве и заменить его имя - есть какие-то варианты?
Поскольку у меня на сайте есть множество данных хранимых в ассоциативных массивах, то и ключи периодически приходится заменять, но , чтобы место данного ключа не менялось!
Замена имени ключа в цикле.
Предположим, что у нас есть ассоциативный массив(приведем простой пример такого массива):
Выведем через print_r
Array(
[помидоры] => 15
[огурцы] => 12
[петрушка] => 22
[бананы] => 16
)
Замена ключа без изменения положения в массиве:
Предположим, что в выше приведенном массиве нам требуется изменить имя ключа номер 2(огурцы) на какое-то другое, без изменения положения в массиве, для этого вам понадоится:
Выше цикла создаем новый массив:
Для этого примера нам понадобится, цикл foreach
Внутри цикла создадим условие if и проверим, если ключ массива "огурцы"
То, создаем в цикле новый массив "$new_arr" с новым ключом "новые_огурцы" и значением старого ключа:
Иначе(else) - все остальное :
И далее... вернем в старый массив новый:
Соберем весь код замены ключа на новый:
$new_arr = array();
foreach ($price as $key => $value)
{
if($key==огурцы) {$new_arr[новые_огурцы] = $value;}
else {$new_arr[$key] = $value;}
}
$price = $new_arr;
Ну и далее... нам остается только вывести результат замены ключа в массиве, без изменения его положения:
Результат вывода замены ключа:
Array(
[помидоры] => 15
[новые_огурцы] => 12
[петрушка] => 22
[бананы] => 16
)