PHP Conference Japan 2024

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

$result = array_pad($input, -7, -1);
// result 为 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);
?>

将给出
数组 ( [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 Bussiness Solutions
17 年前
array_pad() 的一个简单示例

语法如下:array_pad(数组, (+/-)整数, 值)

其中,“数组”是要添加值的数组,

"(+/-) 整数" 是决定数组长度的值(它应该大于数组的长度)。
如果它是一个负数,则值将添加到数组的左侧,否则将添加到右侧。

"值" 表示要添加到数组的值

让我们尝试一个例子

<?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=填充,1=填充... 4=填充,5=填充

现在我用我的字符串填充了 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