如何使用另一个关联数组重命名PHP数组中的某些键?

时间:2014-03-03 19:38:16

标签: php arrays

给定数据阵列......

$data_array = array (
"old_name_of_item" => "Item One!"
);

...并重命名数组......

$rename_array = array (
"old_name_of_item" => "new_name_of_item"
);

...我想生成这样的输出:

Array
(
    [new_name_of_item] => Item One!
)

我编写了以下函数,虽然它工作正常但我觉得我缺少PHP的一些功能。

function rename_keys($array, $rename_array) {
foreach( $array as $original_key => $value) {
    foreach( $rename_array as $key => $replace ) {
        if ($original_key == $key) {
            $array[$replace] = $value;
            unset($array[$original_key]); 
        }
    }
}
return $array;
}

PHP是否提供内置函数来帮助解决这个常见问题?谢谢!

2 个答案:

答案 0 :(得分:1)

你只需要完成一次数组:

function rename_keys($array, $rename_array) {
    foreach ( $rename_array as $original_key => $value ) {
        if (isset($array[$original_key])) {
            $array[$rename_array[$original_key]] = $array[$original_key];
            unset($array[$original_key]);
        }
    }
}

当然,这假定两个数组都已正确填充(替换键的唯一值)。

编辑:仅在$rename_array中存在相应元素时才替换。

编辑2:仅通过$rename_array

答案 1 :(得分:0)

今天第二次。这个更容易:

$data_array = array_combine(
        str_replace(array_keys($rename_array), $rename_array, array_keys($data_array)), $data_array);