在 PHP 的标准库函数中,array_fill() 是一个小巧但非常实用的工具。面试中常常考察候选人是否熟悉这种看似简单却暗藏巧思的函数。理解并掌握 array_fill() 的使用,不仅能在实际开发中提升效率,也能在面试中展示出你对数组处理的熟练程度。
array_fill() 用于用指定的值填充一个数组。其函数原型如下:
array array_fill ( int $start_index , int $count , mixed $value )
$start_index:起始索引
$count:元素个数
$value:用于填充的值
示例:
$array = array_fill(0, 5, 'PHP');
print_r($array);
输出:
Array
(
[0] => PHP
[1] => PHP
[2] => PHP
[3] => PHP
[4] => PHP
)
这个函数在你需要快速创建一个有默认值的数组时非常方便。
比如你要初始化一组状态为 false 的布尔值数组:
$status = array_fill(0, 10, false);
适用于诸如:用户投票状态、权限检查标识、题目答题状态等初始化任务。
有时候我们处理外部数据,某些字段值缺失,但我们希望保持统一的数据格式。这时可以使用 array_fill() 进行占位。
$placeholders = array_fill(0, 3, 'N/A');
在导出 CSV 或构建统一的数据表格时,这种写法非常常见。
假设一个问卷有 5 道题,每题默认值是 0 分,可以这么写:
$scores = array_fill(1, 5, 0); // 从题号 1 开始
array_fill() 与其他数组函数结合可以实现更复杂的逻辑。
与 array_combine() 联合:
如果你有一组字段名,想给每个字段赋一个默认值:
$fields = ['name', 'email', 'phone'];
$defaults = array_fill(0, count($fields), '');
$data = array_combine($fields, $defaults);
输出:
Array
(
[name] =>
[email] =>
[phone] =>
)
这是处理表单默认值、接口字段格式化的绝佳方式。
array_fill() 允许负数索引,这在某些特定逻辑中很有用,但需要小心处理。
$negArray = array_fill(-3, 3, 'X');
输出:
Array
(
[-3] => X
[-2] => X
[-1] => X
)
在面试中,面试官可能会这样出题:
使用 array_fill() 快速生成一个索引从 1 到 100,初始值都为 0 的数组,要求最终数组的 key 是连续的整数。
答法:
$data = array_fill(1, 100, 0);
进阶要求可能是:将所有 key 映射为字符串格式,比如 'item_1' 到 'item_100'。
$keys = array_map(fn($n) => "item_$n", range(1, 100));
$values = array_fill(0, 100, 0);
$result = array_combine($keys, $values);
假设我们要构建一个 POST 接口,向 https://api.m66.net/data 提交一个包含 10 个用户默认信息的数组,每个用户数据格式为:
[
'name' => '',
'email' => '',
'status' => 'inactive'
]
我们可以这样写:
$defaultUser = [
'name' => '',
'email' => '',
'status' => 'inactive'
];
$users = array_fill(0, 10, $defaultUser);
$payload = json_encode(['users' => $users]);
$ch = curl_init('https://api.m66.net/data');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
$response = curl_exec($ch);
curl_close($ch);
这段代码展示了 array_fill() 如何在真实业务场景中简化构建结构化数据的过程。
掌握 array_fill() 的使用,可以让你的代码更加简洁、表达更直观。它虽不复杂,但却经常藏着“面试官的考点”。下次遇到类似初始化、默认值填充的需求时,别忘了它的存在。优雅地使用 array_fill(),不仅是代码层面的加分项,也可能成为你在面试中脱颖而出的细节亮点。