在開發PHP 接口請求時,我們經常需要對傳入參數進行處理,並為某些參數設置默認值。如果參數較多,手動初始化數組可能顯得冗餘而容易出錯。此時, array_fill_keys()就成為一個非常高效的工具。
本文將介紹如何使用array_fill_keys()來快速初始化API 請求參數的默認值數組,提高代碼的可維護性與清晰度。
array_fill_keys()是PHP 的一個內置函數,用於將一個數組的鍵與統一的值配對生成一個新數組。
文法:
array_fill_keys(array $keys, mixed $value): array
$keys : 用作新數組鍵名的數組。
$value : 所有鍵的默認值。
設想你正在開發一個接口,用於查詢文章數據,客戶端可能傳入以下參數:
page : 當前頁碼
limit : 每頁數量
sort : 排序字段
order : 排序方向(asc 或desc)
為了避免用戶未傳入這些參數導致系統出錯,後台應設定一個默認參數數組。我們可以使用array_fill_keys()簡化這個過程。
<?php
// 定義參數鍵名
$paramKeys = ['page', 'limit', 'sort', 'order'];
// 使用 array_fill_keys 初始化默認值
$defaultParams = array_fill_keys($paramKeys, null);
// 手動覆蓋默認值(如果需要)
$defaultParams['page'] = 1;
$defaultParams['limit'] = 10;
$defaultParams['sort'] = 'created_at';
$defaultParams['order'] = 'desc';
// 模擬獲取客戶端傳入參數
$userInput = [
'page' => 2,
'order' => 'asc'
];
// 合併用戶輸入與默認值(用戶輸入優先)
$requestParams = array_merge($defaultParams, $userInput);
// 輸出最終參數數組
print_r($requestParams);
Array
(
[page] => 2
[limit] => 10
[sort] => created_at
[order] => asc
)
如你所見, array_fill_keys()讓我們只需列出需要的參數名,就能批量初始化一個乾淨的默認參數結構,大大減少了手動輸入錯誤的可能性。
假設我們要通過POST 請求將這些參數發送到遠程接口https://api.m66.net/articles/list ,可以這樣做:
<?php
$apiUrl = 'https://api.m66.net/articles/list';
$options = [
'http' => [
'method' => 'POST',
'header' => "Content-Type: application/x-www-form-urlencoded\r\n",
'content' => http_build_query($requestParams),
'timeout' => 10
]
];
$context = stream_context_create($options);
$result = file_get_contents($apiUrl, false, $context);
echo $result;
使用array_fill_keys()來初始化API 請求參數的默認值,不僅簡潔,還能提高代碼的可維護性。當你的接口參數列表變更時,只需更新參數鍵數組,而不必修改多個手動賦值的語句。
這是一種非常推薦的實踐方式,尤其適合在大型項目中進行參數管理與結構統一。