array_pad(array $array, int $size, mixed $value): array
$size > 0:向**右側 (尾部)** 填補$size < 0:向**左側 (頭部)** 填補abs($size) <= count($array):不填補,直接回傳原陣列副本<?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
)
*/
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']
$labels = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'];
$data = [120, 150]; // 只有前兩天資料
// 向右補 0 至 5 筆
$chartData = array_pad($data, count($labels), 0);
// [120, 150, 0, 0, 0]
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);
}
原文摘自 zuodefeng 筆記