关键数组中的php键名更改问题

时间:2014-03-03 15:21:50

标签: php

我正在尝试更改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。

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" } }