2024 年日本 PHP 研討會

array_pad

(PHP 4, PHP 5, PHP 7, PHP 8)

array_pad將陣列填補到指定長度

說明

array_pad(陣列 $array, 整數 $length, 混合 $value): 陣列

array_pad() 會回傳 array 的一個副本,並以 value 的值填補到 length 指定的大小。如果 length 為正數,則在陣列右側填補;如果為負數,則在左側填補。如果 length 的絕對值小於或等於 array 的長度,則不進行填補。

參數

array

要填補值的初始陣列。

length

陣列的新大小。

value

如果 array 小於 length,則用於填補的值。

回傳值

回傳 array 的一個副本,並以 value 的值填補到 length 指定的大小。如果 length 為正數,則在陣列右側填補;如果為負數,則在左側填補。如果 length 的絕對值小於或等於 array 的長度,則不進行填補。

更新日誌

版本 說明
8.3.0 在 8.3 之前的版本中,一次只能新增 1048576 個元素。現在,它只受陣列的最大大小限制。

範例

範例 #1 array_pad() 範例

<?php
$input
= array(12, 10, 9);

$result = array_pad($input, 5, 0);
// 結果為 array(12, 10, 9, 0, 0)

$result = array_pad($input, -7, -1);
// 結果為 array(-1, -1, -1, -1, 12, 10, 9)

$result = array_pad($input, 2, "noop");
// 未填補
?>

參見

新增註解

使用者貢獻的註解 8 則註解

21
tugla
15 年前
注意,如果您嘗試使用數字鍵填補關聯式陣列,您的鍵將會被重新編號。

<?php
$a
= array('size'=>'large', 'number'=>20, 'color'=>'red');
print_r($a);
print_r(array_pad($a, 5, 'foo'));

// 使用時間戳記作為鍵值
$b = array(1229600459=>'large', 1229604787=>20, 1229609459=>'red');
print_r($b);
print_r(array_pad($b, 5, 'foo'));
?>

輸出結果:
------------------
陣列
(
[size] => large
[number] => 20
[color] => red
)
陣列
(
[size] => large
[number] => 20
[color] => red
[0] => foo
[1] => foo
)
陣列
(
[1229600459] => large
[1229604787] => 20
[1229609459] => red
)
陣列
(
[0] => large
[1] => 20
[2] => red
[3] => foo
[4] => foo
)
11
goffrie at sympatico dot ca
21 年前
致 daarius - 你的意思是說你擁有...

[2]=>"two"
[3]=>"three"

而你想要...

[0]=>"FILLED"
[1]=>"FILLED"
[2]=>"two"
[3]=>"three"
[4]=>"FILLED"
[5]=>"FILLED"

如果是這樣,那麼以下程式碼...

<?php
$array
= array(2 => "two", 3 => "three");
$array = array_pad($array, count($array)+2, "FILLED");
$num = -(count($array)+2);
$array = array_pad($array, $num, "FILLED");
print_r($array);
?>

將會返回
陣列 ( [0] => FILLED [1] => FILLED [2] => two [3] => three [4] => FILLED [5] => FILLED )
排序應該沒問題,...
7
scott*hurring.com
22 年前
給先前的留言者 -- 如果你有閱讀說明文件,你就會看到負的 pad_size 會將填充值放在陣列的前面。
6
mwwaygoo at hotmail dot com
20 年前
年長了一些,也更明智了一些。

ksort() 會將陣列恢復到正常的順序
所以

<?php
$myArr
= array(2 => 'two', 4 => 'four');

$newArr = array_pad(array(), 6, 'FILLED');
$newArr =$myArr+$newArr;
ksort($newArr);
?>

會得到
Array ( [0] => FILLED [1] => FILLED [2] => two [3] => FILLED [4] => four [5] => FILLED )
2
匿名使用者
20 年前
初始化一個 20x20 多維陣列的方法。

<?php
$a
= array();
$b = array();
$b = array_pad($b,20,0);
$a = array_pad($a,20,$b);
?>
-1
hk, StrApp 商業解決方案
17 年前
一個 array_pad() 的簡單範例

語法如下:array_pad(array(), (+/-)int, value)

其中 "array" 是要添加值的陣列,

"(+/-) int" 是一個決定陣列長度的值(它應該大於陣列的長度)。
如果是負數,則該值將被添加到陣列的左邊,否則將被添加到右邊。

"values" 表示要添加到陣列的值

讓我們試試一個例子

<?php

$digits
= array();
$digits[0] = 1;
$digits[1] = 2;
$digits[2] = 3;
$arraypad = array_pad($digits, -4, "0");
print_r($arraypad);

?>

輸出

Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 )
-2
daarius at hotmail dot com
22 年前
是的,沒錯。但是,如果陣列的索引是 2=two, 3=three

而我想要再填滿 4 個鍵值。但不是隨便填,而是要維持鍵值的索引。

所以,我希望得到 0=FILLED, 1=FILLED ... 4=FILLED, 5=FILLED

現在我用我的字串填充了 4 個鍵值。

如果我們知道缺少的鍵值,我們可以這樣做,但如果我們不知道,那麼如果 array_pad() 或其他新函數可以做到這一點就好了?

顯然地,我們可以使用 `array_key_exists()` 遍歷陣列來達成這個目標,如果找不到鍵值,就建立並填入它。
此致,
Daarius...
-3
mwwaygoo at hotmail dot com
22 年前
或者你可以這樣做

<?php
$myArr
= array(2 => 'three', 3 => 'four');

$newArr = array_pad(array(), 4, 'FILLED');
$newArr =$myArr+$newArr;
?>

這樣可以得到你想要的結果,但由於新增的順序,排序會有點奇怪。不過索引值是正確的,而這正是你想要的。

`print_r($newArr)` 輸出
Array ( [2] => three [3] => four [0] => FILLED [1] => FILLED )

希望這有幫助
To Top