array_fill(int $start_index, int $count, mixed $value): array
<?php
// 索引 5 開始,6 個元素,值 'hehe'
print_r(array_fill(5, 6, 'hehe'));
/*
Array
(
[5] => hehe
[6] => hehe
[7] => hehe
[8] => hehe
[9] => hehe
[10] => hehe
)
*/
// 負數起始索引
print_r(array_fill(-3, 4, 'x'));
/*
Array
(
[-3] => x
[-2] => x
[-1] => x
[0] => x
)
*/
$counters = array_fill(0, 100, 0); // 100 個計數器歸零
// 或關聯式
$counters = array_fill_keys(['views','clicks','orders'], 0);
$rows = 10;
$cols = 5;
$matrix = array_fill(0, $rows, array_fill(0, $cols, 0));
// ⚠️ 內層陣列為同一參考!修改 $matrix[0][0] 會影響所有行
// 正確:使用 array_map 建立獨立行
$matrix = array_map(fn() => array_fill(0, $cols, 0), range(1, $rows));
$dummyUsers = array_map(fn($i) => [
'id' => $i,
'name' => "User $i",
'email' => "user$i@example.com",
], range(1, 50));
// 或配合 array_fill
$dummy = array_fill(0, 50, ['name' => 'Guest', 'role' => 'visitor']);
// 注意: 同一參考問題
function emptyPage(int $page, int $perPage): array
{
return [
'page' => $page,
'per_page' => $perPage,
'data' => array_fill(0, $perPage, null), // 佔位
'total' => 0,
];
}
| 需求 | 函式 | 特點 |
|---|---|---|
| 指定起始索引、固定值 | `array_fill` | 最直接 |
| 指定鍵名陣列、固定值 | `array_fill_keys` | 鍵名可為字串 |
| 遞增數字序列 | `range($start, $end, $step)` | 值不同 |
| 重複模式陣列 | `array_pad([], $n, $val)` | 可正負長度 |
| 獨立物件陣列 | `array_map(fn() => new Obj(), range(1,$n))` | 避免參考共用 |
原文摘自 zuodefeng 筆記