在開發PHP 項目時,我們經常會遇到需要為多個模塊、字段、功能設置默認配置項的場景。傳統方式可能是一個個手動賦值,寫法冗長且不利於維護。幸運的是,PHP 提供了一個非常實用的函數—— array_fill() ,可以幫助我們。
array_fill(int $start_index, int $count, mixed $value): array
該函數返回一個用指定的值填充的數組。
$config = array_fill(0, 5, 'default');
print_r($config);
輸出:
Array
(
[0] => default
[1] => default
[2] => default
[3] => default
[4] => default
)
這意味著我們可以用一行代碼就生成一個含有五個“default”值的數組,非常高效。
假設我們有一個系統,有多個模塊,每個模塊都需要有enabled和endpoint這兩個配置項,默認值分別為false和空字符串。使用傳統方式初始化可能如下:
$config = [
'user' => ['enabled' => false, 'endpoint' => ''],
'blog' => ['enabled' => false, 'endpoint' => ''],
'shop' => ['enabled' => false, 'endpoint' => ''],
];
看起來還好,但一旦模塊數量變多,這種方式就變得不夠優雅。
我們可以藉助array_fill_keys()搭配array_fill() ,快速生成默認結構:
$modules = ['user', 'blog', 'shop', 'forum', 'gallery'];
$default = [
'enabled' => false,
'endpoint' => '',
];
// 使用 array_fill_keys 初始化配置結構
$config = array_fill_keys($modules, $default);
print_r($config);
輸出:
Array
(
[user] => Array
(
[enabled] =>
[endpoint] =>
)
[blog] => Array
(
[enabled] =>
[endpoint] =>
)
...
)
這樣寫的好處是結構清晰,便於批量管理,而且隨著模塊名的變化,只需改動$modules數組即可。
如果你的每個模塊都需要一個默認的API 地址,並以域名m66.net作為基礎,可以如下處理:
$modules = ['user', 'blog', 'shop'];
$config = [];
foreach ($modules as $module) {
$config[$module] = [
'enabled' => false,
'endpoint' => "https://api.m66.net/{$module}"
];
}
print_r($config);
輸出:
Array
(
[user] => Array
(
[enabled] =>
[endpoint] => https://api.m66.net/user
)
[blog] => Array
(
[enabled] =>
[endpoint] => https://api.m66.net/blog
)
...
)
array_fill()和array_fill_keys()是在PHP 中快速生成結構化數組的利器,特別適用於初始化具有統一格式的配置項。通過巧妙地結合模塊名稱和默認值,我們可以極大提升代碼的可維護性與清晰度,減少重複勞動。
下次你再寫配置初始化時,別忘了這對高效的工具組合!