我正在尝试更改arraylist中键的键名。说,我有一个类似下面的数组。我想将“n”更改为“name”,将“l”更改为“surname”
Array
(
[0] => Array
(
[n] => Amy
[l] => Gonzalez
)
[1] => Array
(
[n] => Jeff
[l] => Garcia
)
)
这是我的代码。 $ data是存储数组的地方,我动态地得到它。
$newkey = array('n'=>'name','l'=>'surname');
$count = count($data);
$i=0;
if($i<=$count){
foreach( $data as &$item )
{
foreach( $newkey as $key => $replace )
{
if (key_exists($key,$item))
{
$item[$replace] = $item[$key];
unset($item[$key]);
}
}
}
$i++;
}
这仅适用于最后一个条目。我究竟做错了什么?我的数组有时可能会获取多个结果,而不仅仅是2。
答案 0 :(得分:0)
尝试这样的事情:
foreach($data as &$array) {
$array = array_combine(
str_replace(array_keys($newkey), $newkey, array_keys($array)), $array);
}
答案 1 :(得分:-1)
不是答案,但我需要一些空间来发布代码
我不确定是什么问题因为这段代码有效:
$data = array(
array(
"n" => "a",
"l" => "b"
),
array(
"n" => "a",
"l" => "b"
)
);
$newkey = array('n'=>'name','l'=>'surname');
foreach( $data as &$item )
{
foreach( $newkey as $key => $replace )
{
if (key_exists($key,$item))
{
$item[$replace] = $item[$key];
unset($item[$key]);
}
}
}
var_dump($data);
输出:
array(2) { [0]=> array(2) { ["name"]=> string(1) "a" ["surname"]=> string(1) "b" } [1]=> &array(2) { ["name"]=> string(1) "a" ["surname"]=> string(1) "b" } }