PHP在很多时候需要修改多维数组的键名或者键值,采用递归多维数组替换键名和键值的方法可以实现替换键名和键值,代码如下:
替换多维数组的键名代码:
/*多维数组键名替换
*$array要替换键名的原始多维数组:array("color"=>array("blue","green","red"),"size"=>array("L","X","S"));
*$oldKeyArr原始数组键名:array("color","size");
*$newKeyArr要替换成的数组新键名:array("颜色","尺寸");
*返回值:
*$result=changeKeys($array,$oldKeyArr,$newKeyArr);
*print_r($result);
*/
functionchangeKeys($array,$oldKeyArr,$newKeyArr){
if(!is_array($array))return$array;
$newArray=array();
foreach($arrayas$key=>$value){
//处理数组的键,如color改成颜色
$key=array_search($key,$oldKeyArr,true)===false?$key:$newKeyArr[array_search($key,$oldKeyArr)];
if(is_array($value)){
$value=changeKeys($value,$oldKeyArr,$newKeyArr);
}
$newArray[$key]=$value;
}
return$newArray;
}
替换多维数组键值的代码:
//递归改变数组的键值
functionchangeValues($array,$valueEnArray,$valueZhCnArray)
{
if(!is_array($array))return$array;
$tempArray=array();
foreach($arrayas$key=>$value){
if(is_array($value)){
$value=changeValues($value,$valueEnArray,$valueZhCnArray);
}else{
//处理数组的值,翻译成中文
$value=array_search($value,$valueEnArray,true)===false?$value:$valueZhCnArray[array_search($value,$valueEnArray)];
}
$tempArray[$key]=$value;
}
return$tempArray;
}
$info=array("fruits"=>array("apple","banana","pear"),"furniture"=>array("table","chair","bed"));
$valueEnArray=array("apple","banana","pear","table","chair","bed");
$valueZhCnArray=array("苹果","香蕉","梨","桌子","椅子","床");
$result=changeValues($info,$valueEnArray,$valueZhCnArray);
print_r($result);