Быстрый способ переименовать ключ этого массива ассоциативных массивов

У меня есть этот массив PHP;

array(
(int) 0 => array(
'KeyName' => array(
'id' => '1',
'number' => '11A',
)
),
(int) 1 => array(
'KeyName' => array(
'id' => '2',
'number' => '22A',
)
),
(int) 2 => array(
'KeyName' => array(
'id' => '16',
'number' => '001A',
)
)
)

Я хотел бы изменить 'KeyName' в 'NewKeyName' такой, что новый массив становится;

array(
(int) 0 => array(
'NewKeyName' => array(
'id' => '1',
'number' => '11A',
)
),
(int) 1 => array(
'NewKeyName' => array(
'id' => '2',
'number' => '22A',
)
),
(int) 2 => array(
'NewKeyName' => array(
'id' => '16',
'number' => '001A',
)
)
)

Какой быстрый способ сделать это?

Ниже приведен код, который я пробовал;

foreach ($array as $key)
{
$array[$key]['KeyName']=$array[$key]['NewKeyName'];
}

Но я получил недопустимую ошибку смещения. Есть ли лучшие способы решить проблему?

2

Решение

В вашем коде вы получаете значение вместо ввода $key, Ты должен попробовать $array as $key => $val вместо $array as $key, Также внутри цикла просто скопируйте значение в новый индекс и удалите существующий индекс.

подобно

foreach ($array as $key => $val)
{
$array[$key]['NewKeyName'] = $array[$key]['KeyName'];
unset($array[$key]['KeyName']);
}
1

Другие решения

Поскольку вы хотите заменить, просто используйте копию внутри foreach:

В основном вы помещаете всю копию массива вместо использования ключа:

foreach ($array as $key) {
// ^ this is the copy of that sub array not the key
$array[$key]['KeyName']=$array[$key]['NewKeyName'];
}

Итак, наконец, если вы хотите в новом:

$new_array = [];
foreach($array as $key => $value) {
// ^ keys goes here
$new_array[$key]['NewKeyName'] = $value['KeyName'];
}

Или, поскольку вы не можете ссылаться на ключи:

foreach($array as $key => $value) {
$array[$key]['NewKeyName'] = $value['KeyName'];
unset($array[$key]['KeyName']);
}
1

Попробуйте этот код, он должен работать:

$array2[] = array();
for ($i = 0; $i < count($array); $i++)
{
$array2[$i]['NewKeyName'] = array_merge($array[$i]['KeyName']);
}
$array = $array2;
1
По вопросам рекламы [email protected]