У меня есть этот массив 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'];
}
Но я получил недопустимую ошибку смещения. Есть ли лучшие способы решить проблему?
В вашем коде вы получаете значение вместо ввода $key
, Ты должен попробовать $array as $key => $val
вместо $array as $key
, Также внутри цикла просто скопируйте значение в новый индекс и удалите существующий индекс.
подобно
foreach ($array as $key => $val)
{
$array[$key]['NewKeyName'] = $array[$key]['KeyName'];
unset($array[$key]['KeyName']);
}
Поскольку вы хотите заменить, просто используйте копию внутри 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']);
}
Попробуйте этот код, он должен работать:
$array2[] = array();
for ($i = 0; $i < count($array); $i++)
{
$array2[$i]['NewKeyName'] = array_merge($array[$i]['KeyName']);
}
$array = $array2;