首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP array_fill() 以指定值建立固定長度陣列:起始索引、數量與多維陣列初始化

     編輯:PHP 相關知識

函式簽名

array_fill(int $start_index, int $count, mixed $value): array
  • 建立**新陣列**,索引從 `$start_index` 開始連續 `$count` 個
  • `$count` 必須 `> 0`,否則拋出 `ValueError` (PHP 8) / `Warning` (PHP 7)
  • 值為**同一參考** (若為物件/陣列),修改一個影響所有

基本範例

<?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
)
*/

實戰應用

1. 初始化計數器陣列


$counters = array_fill(0, 100, 0); // 100 個計數器歸零
// 或關聯式
$counters = array_fill_keys(['views','clicks','orders'], 0);

2. 建立固定大小矩陣 (二維陣列)


$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));

3. 佔位資料產生 (測試、Seeder)


$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']);
// 注意: 同一參考問題

4. 分頁預設結構


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 筆記

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved