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
  ]
]
相關文章
相關標籤/搜索