【发布时间】:2016-05-14 18:55:21
【问题描述】:
给定这个数组:
$list = array(
'one' => array(
'A' => 1,
'B' => 100,
'C' => 1234,
),
'two' => array(
'A' => 1,
'B' => 100,
'C' => 1234,
'three' => array(
'A' => 1,
'B' => 100,
'C' => 1234,
),
'four' => array(
'A' => 1,
'B' => 100,
'C' => 1234,
),
),
'five' => array(
'A' => 1,
'B' => 100,
'C' => 1234,
),
);
我需要一个函数 (replaceKey($array, $oldKey, $newKey)) 以独立于深度的 新键 替换任何键“一”、“二”、“三”、“四”或“五”那把钥匙的。我需要该函数返回一个具有相同顺序和结构的新数组。
我已经尝试处理这些问题的答案,但我找不到保持顺序并访问数组中的第二级的方法:
Changing keys using array_map on multidimensional arrays using PHP
Change array key without changing order
PHP rename array keys in multidimensional array
这是我失败的尝试:
function replaceKey($array, $newKey, $oldKey){
foreach ($array as $key => $value){
if (is_array($value))
$array[$key] = replaceKey($value,$newKey,$oldKey);
else {
$array[$oldKey] = $array[$newKey];
}
}
return $array;
}
问候
【问题讨论】:
-
您应该可以使用您链接的第二个问题中的方法。但是您需要制作一个搜索每个级别的递归版本。
标签: php arrays multidimensional-array replace key