PHP 根据配置转换数组中的键名 方便给前端的时候改键名

  /**
     * 根据配置转换数组中的键名
     * @param array $data 数据,必须为二维数组格式 [0=>[]]
     * @param array $keyNameMapArr 键名转换配置,key为旧的键名,value为新的键名,若找不到旧键名或者新旧键名一致则不进行转换
     * @param bool $unsetOldKey 是否删除旧的键值对,默认是
     * @return array
     */
    public function changeKeyName($data, $keyNameMapArr, $unsetOldKey = true)
    {
        if ($data && is_array($data) && $keyNameMapArr && is_array($keyNameMapArr)) {
            foreach ($data as $k => $v) {
                // 空数组或者其他空的情况时不处理
                if (!$v) {
                    continue;
                }
                // 遍历字段map
                foreach ($keyNameMapArr as $oldName => $newName) {
                    // 旧键名与新键名相等 或 数组中没有指定的旧键名 则直接跳过
                    if ($oldName === $newName && !array_key_exists($oldName, $v)) {
                        continue;
                    }

                    $data[$k][$newName] = $v[$oldName];

                    // 删除旧的键值对
                    if ($unsetOldKey) {
                        unset($data[$k][$oldName]);
                    }
                }
            }
        }
        return $data;
    }
// 调用demo
$data = [
  ['xxxId' => 1]
];
$keyNameMapArr = ['xxxId' => 'id'];
$data = $this->changeKeyName($data, $keyNameMapArr);
    
// $data返回
array:1 [
  0 => array:1 [
    "id" => 1
  ]
]

 

posted on 2019-09-05 12:05  多多明明  阅读(611)  评论(0编辑  收藏  举报