我有这个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'];
}
但是我得到了一些非法的偏移错误。有没有更好的方法来解决问题?
答案 0 :(得分:1)
在您的代码中,您获得的值不是$key
中的键。您必须尝试$array as $key => $val
而不是$array as $key
。一旦进入循环,只需将值复制到新索引并取消设置现有索引。
像
foreach ($array as $key => $val)
{
$array[$key]['NewKeyName'] = $array[$key]['KeyName'];
unset($array[$key]['KeyName']);
}
答案 1 :(得分: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']);
}
答案 2 :(得分:1)
试试这段代码吧:
$array2[] = array();
for ($i = 0; $i < count($array); $i++)
{
$array2[$i]['NewKeyName'] = array_merge($array[$i]['KeyName']);
}
$array = $array2;