PHP中递归替换多维数组键名和键值方法
2018-01-25| 程成| 2657| 2| PHP技术

PHP多维数组递归替换键名,代码如下:


   /**
     * Function: 数组递归替换键名
     * User: chengcheng
     * Date: 2018/1/23 17:04
     * Return:
     */
    public function changeKeys($array, $keyEnArray, $keyZhCnArray){
        if(!is_array($array)) return $array;
        $tempArray = array();
        foreach ($array as $key => $value){
            // 处理数组的键,翻译成中文
            $key = array_search($key, $keyEnArray, true) === false ? 
            $key : $keyZhCnArray[array_search($key, $keyEnArray)];
            if(is_array($value)){
                $value = self::changeKeys($value, $keyEnArray, $keyZhCnArray);
            }
            $tempArray[$key] = $value;
        }
        return $tempArray;
    }


用法:changeKeys($return, ['child','cplbbh','cplbmc'], ['children','value','label']);

解释:其中 $array 是数据数组,

$keyEnArray 存的是需要替换的值(不关心数组存放的位置),

$keyZhCnArray 存的是替换后的值,与 $keyEnArray 替换的值一一对应。



PHP多维数组递归替换键值,代码如下:


/**
  * Function: 数组递归替换键值
  * User: chengcheng
  * Date: 2018/1/23 18:01
  * Return:
  */
public function changeValues($array, $valueEnArray, $valueZhCnArray)
{
    if(!is_array($array)) return $array;
    $tempArray = array();
    foreach ($array as $key=>$value){
        if(is_array($value)){
            $value = self::changeValues($value, $valueEnArray, $valueZhCnArray);
        }else{
            // 处理数组的值,翻译成中文
            $value = array_search($value, $valueEnArray, true) === false ? 
            $value : $valueZhCnArray[array_search($value, $valueEnArray)];
        }
        $tempArray[$key]=$value;
    }
    return $tempArray;
}


用法:changeValues($return, ['child','cplbbh','cplbmc'], ['children','value','label']);

解释:其中 $array 是数据数组,

$keyEnArray 存的是需要替换的值(不关心数组存放的位置),

$keyZhCnArray 存的是替换后的值,与 $keyEnArray 替换的值一一对应。




×
作者:程成
QQ:492245711