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

PHP array_pad() 以指定值填補陣列至指定長度:語法、正負長度差異與實例

     編輯:PHP 相關知識

函式簽名

array_pad(array $array, int $size, mixed $value): array
  • 回傳**新陣列**,原陣列不變
  • $size > 0:向**右側 (尾部)** 填補
  • $size < 0:向**左側 (頭部)** 填補
  • abs($size) <= count($array):不填補,直接回傳原陣列副本
  • 單次最多填補 1,048,576 元素 (PHP 內部限制)

基本範例

<?php
$input = [12, 10, 9];

// 向右填補至長度 5,值為 0
print_r(array_pad($input, 5, 0));
/*
Array
(
    [0] => 12
    [1] => 10
    [2] => 9
    [3] => 0
    [4] => 0
)
*/

// 向左填補至長度 7,值為 -1
print_r(array_pad($input, -7, -1));
/*
Array
(
    [0] => -1
    [1] => -1
    [2] => -1
    [3] => -1
    [4] => 12
    [5] => 10
    [6] => 9
)
*/

// 目標長度 2 小於原長度 3 → 不填補
print_r(array_pad($input, 2, 'noop'));
/*
Array
(
    [0] => 12
    [1] => 10
    [2] => 9
)
*/

實戰應用場景

1. 統一 CSV 欄位數量

function normalize_csv_row(array $row, int $expectedCols, mixed $default = ''): array
{
    return array_pad($row, $expectedCols, $default);
}

$raw = ['id' => 1, 'name' => 'Alice']; // 只有 2 欄
$fixed = normalize_csv_row($raw, 5, 'N/A');
// ['id'=>1, 'name'=>'Alice', 0=>'N/A', 1=>'N/A', 2=>'N/A']

2. 圖表資料對齊 (前端 Chart.js 需等長陣列)

$labels = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'];
$data   = [120, 150]; // 只有前兩天資料

// 向右補 0 至 5 筆
$chartData = array_pad($data, count($labels), 0);
// [120, 150, 0, 0, 0]

3. 分頁固定每頁筆數,不足補空白

function paginate_with_padding(array $items, int $page, int $perPage, mixed $padValue = null): array
{
    $offset = ($page - 1) * $perPage;
    $slice = array_slice($items, $offset, $perPage);
    return array_pad($slice, $perPage, $padValue);
}

注意事項

  • **數字索引會重設**:填補後的陣列索引永遠從 0 開始連續,字串鍵名會被轉為數字索引。
  • 若需保留關聯鍵名,請改用迴圈手動填補或 `array_merge` 配合 `array_fill_keys`。
  • 填補值為物件/陣列時,所有新元素**共用同一參考**,修改一個會影響其他,需用 `array_map(fn() => clone $obj, ...)` 處理。

原文摘自 zuodefeng 筆記

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