在开发 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 中快速生成结构化数组的利器,特别适用于初始化具有统一格式的配置项。通过巧妙地结合模块名称和默认值,我们可以极大提升代码的可维护性与清晰度,减少重复劳动。
下次你再写配置初始化时,别忘了这对高效的工具组合!