Лучший способ переименовать ключи в PHP, чем array_combine?

Я работаю над следующей комбинацией array_combine и array_map - в идеале я хотел бы, чтобы что-то больше похожее на array_map_keys отображало функцию для переименования ключей. Пример:

$input = array(
    'a'=>1
    'b'=>2
);
$desired_output = array(
    'prefix.a'=>1
    'prefix.b'=>2
);

function rename_keys($input) {
array_combine(
    array_map(
        function($col) {
            return 'prefix.'.$col;
        },
        array_keys($input)
    ),
    array_values($input)
);

Вы пробовали что-нибудь, прежде чем опубликовать вопрос? Если да, опубликуйте свой код и результаты. Если нет, вам следует начать с нескольких попыток.

M. Eriksson 08.04.2019 11:47

Это невозможно. Переименование означает - добавить новый ключ, удалить предыдущий ключ. Ни одна из этих функций не может этого сделать. array_map не работает даже с ключами.

u_mulder 08.04.2019 11:51

Повозился и добавил рабочий пример. С array_combine это достаточно компактно, но было просто любопытно, существует ли array_map_keys.

Nathan 08.04.2019 11:57

Самый компактный способ тут действительно старый добрый foreach.

deceze 08.04.2019 11:58
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
63
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

array_combine не нужно. Простого foreach должно быть достаточно.

    $old = array(
        'a'=>1,
        'b'=>2
    );

    $new = array();

    foreach ($old as $key => $value) {
        $new['prefix.' . $key] = $value;
    }

    var_dump($new);

выход:

array(2) {
  ["prefix.a"]=>
  int(1)
  ["prefix.b"]=>
  int(2)
}

редактировать; На ваш вопрос уже был дан ответ здесь, включая тесты для различных подходов.

Вам просто нужно зациклить его с помощью $key и $value

$a = array('a'=>1,'b'=>2);
echo'<pre>';print_r($a);
$b=array();
foreach($a as $key => $value){
    $b['prefix.'.$key] = $value;
}
echo'<pre>';print_r($b);die;

Выход:

$a:
Array
(
    [a] => 1
    [b] => 2
)
$b :
Array
(
    [prefix.a] => 1
    [prefix.b] => 2
)

Это цикл foreach, а не цикл for :-)

M. Eriksson 08.04.2019 13:22

Другие вопросы по теме

Похожие вопросы

Как проверить, начинается ли входное значение с прописной буквы/или имеет ли оно строчные буквы/или все ли оно в верхнем регистре в PHP?
Сообщение PHP о том, как получить значения параметров внутри цикла foreach для отображения выбранного значения
Как я могу отправить электронное письмо на несколько идентификаторов электронной почты Cc, используя php и google gmail api?
Как Laravel генерирует SQL-запросы
Как сделать так, чтобы поиск по условию в SQL отображал только определенный набор строк
Замените изображение продукта заполнителем на основе ролей пользователей в WooCommerce
Как определить входное значение по умолчанию для метода публикации?
Как объединить существующие данные с новыми данными?
Как отобразить имена крестников посла в списке?
Достаточно одного файла кода PHP для загрузки изображений от всех 10 000 000 пользователей или должно быть больше файлов PHP