/** * 根據配置轉換數組中的鍵名 * @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 ] ]