array_pad

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

array_pad用指定的值填充数组到指定的长度

描述

array_pad(array $array, int $length, mixed $value): array

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);
// result is array(12, 10, 9, 0, 0)

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

$result = array_pad($input, 2, "noop");
// not padded
?>

参见

添加笔记

用户贡献的笔记 11 个笔记

22
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'));
?>

产生以下结果
------------------
Array
(
[size] => large
[number] => 20
[color] => red
)
Array
(
[size] => large
[number] => 20
[color] => red
[0] => foo
[1] => foo
)
Array
(
[1229600459] => large
[1229604787] => 20
[1229609459] => red
)
Array
(
[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);
?>

将返回
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 )
3
Anonymous
20 年前
一种初始化 20x20 多维数组的方法。

<?php
$a
= array();
$b = array();
$b = array_pad($b,20,0);
$a = array_pad($a,20,$b);
?>
-1
hk, StrApp Bussiness Solutions
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=二,3=三

我想填充 4 个更多的键。但不是填充在任何地方,而是想保留键索引。

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

现在我得到了 4 个用我的字符串填充的更多键。

如果我们知道缺少的键,我们可以做到这一点,但如果我们不知道,那么 array_pad() 或也许一些新函数可以做到这一点会很好吗?

显然,我们可以通过使用 array_key_exists() 遍历数组来实现这一点,如果你没有找到键,只需创建并填充它。
此致,
Daarius...
-3
mwwaygoo at hotmail dot com
21 年前
或者你可以这样做

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

希望这有帮助
-7
oaev at mail dot ru
19 年前
获取包含 5 个从 0 到 9 的随机数的数组的简单方法

$rand_arr = array_rand( array_pad( array(), 10, 1 ), 5 );
-7
slava-san at mail dot ru
11 年前
// 将元素插入数组
function array_insert(&$arr, $pos, $new_el=null) {
$arraypad = array_pad($arr, count($arr)+1, 0);
for ($i=count($arr)-1; $i>=$pos; $i--) {
$arr[$i+1] = $arr[$i];
if ($i == $pos) {
$arr[$i] = $new_el;
}
}
}

$digits = array();
$digits[0] = 0;
$digits[1] = 1;
$digits[2] = 2;
$digits[3] = 3;
$digits[4] = 4;
$digits[5] = 5;
echo "was: "; var_dump($digits);

array_insert($digits, 3, 100);
echo "new: "; var_dump($digits);
-12
sonu50imedbvu at gmail dot com(Sonu Jaiswal)
13 年前
关于 "$pad_size" 值的信息,

如果我们将 "$pad_size" 的值设置为 -3 到 3,

它将生成如下输出

<?php
$result
= array_pad($input, -3, "noop");
//result is array(12, 10, 9)

$result = array_pad($input, 3, "noop");
//result is array(12, 10, 9)
?>

这意味着数组将保持不变。
To Top