array_fill是PHP中用于生成指定长度、相同值数组的函数,语法为array_fill(int $start_index, int $num, mixed $value),支持数值键连续填充,但不支持字符串键直接填充,且引用类型值为浅拷贝。

array_fill 是 PHP 中用来批量生成指定长度、相同值数组的函数,用法简单直接。
基本语法和参数说明
函数签名:
array_fill(int $start_index, int $num, mixed $value): array
- $start_index:起始键名(支持数字或字符串,但常用数字)
- $num:要生成的元素个数(必须 ≥ 0)
- $value:每个元素填入的值(可以是任意类型,包括 null、数组、对象等)
常见使用示例
生成 5 个元素,键从 0 开始,值全为 "default":
$arr = array_fill(0, 5, 'default');
→ [0=>'default', 1=>'default', 2=>'default', 3=>'default', 4=>'default']
从键 10 开始生成 3 个元素,值为 0:
$arr = array_fill(10, 3, 0);
→ [10=>0, 11=>0, 12=>0]
生成关联键名数组(需配合 array_keys 或其他方式,因为 array_fill 本身只支持数值键偏移):
立即学习“PHP免费学习笔记(深入)”;
若想用字符串键,可先用 array_fill_keys,例如:
$keys = ['a', 'b', 'c']; $arr = array_fill_keys($keys, 'init');
→ ['a'=>'init', 'b'=>'init', 'c'=>'init']
注意事项
- 如果 $num 为 0,返回空数组
[] - 如果 $num 为负数,会触发 Warning 并返回
false - 生成的数组键是连续整数(从 $start_index 开始递增),不自动跳过已有键,也不检测是否覆盖
- 值为引用类型(如数组、对象)时,所有元素指向同一份内存(即浅拷贝),修改其中一个会影响全部 —— 如需独立副本,需额外循环 + clone 或 array_map
替代方案参考
需要更灵活控制(比如带键名、条件填充、动态值)时,可考虑:
- array_fill_keys():用给定键数组 + 单一值生成关联数组
- array_map() + array_fill():组合实现按规则生成值
- for / foreach 循环:适合复杂逻辑或差异化赋值



















