数组 函数
在线手册:中文  英文

array_pad

(PHP 4, PHP 5)

array_pad 用值将数组填补到指定长度

说明

array array_pad ( array $input , int $pad_size , mixed $pad_value )

array_pad() 返回 input 的一个拷贝,并用 pad_value 将其填补到 pad_size 指定的长度。如果 pad_size 为正,则数组被填补到右侧,如果为负则从左侧开始填补。如果 pad_size 的绝对值小于或等于 input 数组的长度则没有任何填补。有可能一次最多填补 1048576 个单元。

参数

input

Initial array of values to pad.

pad_size

New size of the array.

pad_value

Value to pad if input is less than pad_size.

返回值

Returns a copy of the input padded to size specified by pad_size with value pad_value. If pad_size is positive then the array is padded on the right, if it's negative then on the left. If the absolute value of pad_size is less than or equal to the length of the input then no padding takes place.

范例

Example #1 array_pad() 例子

<?php
$input 
= array(12109);

$result array_pad($input50);
// 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($input2"noop");
// not padded
?>

参见


数组 函数
在线手册:中文  英文

用户评论:

sonu50imedbvu at gmail dot com(Sonu Jaiswal) (2011-01-12 00:53:01)

Just an info about the value of "$pad_size" , 

If we set the value of "$pad_size" from -3 to 3,

It will produce the output like:

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

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

means array will remain the same.

tugla (2008-12-18 09:23:35)

Beware, if you try to pad an associative array using numeric keys, your keys will be re-numbered.

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

// use timestamps as keys
$b = array(1229600459=>'large'1229604787=>201229609459=>'red');
print_r($b);
print_r(array_pad($b5'foo'));
?>

yields this:
------------------
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
)

hk, StrApp Bussiness Solutions (2007-01-08 02:15:19)

A simple example for array_pad()

the syntax is as follows: array_pad(array(), (+/-)int, value)

where "array" is the array to which the value is to be added,

"(+/-) int" is a value that decides the length of the array(it should be greater than the length of the array.
if its a negative number then the value will be added at the left of the array else it will be added to the right.

"values" denotes the value to be added to the array

lets try an example:

<?php

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

?>

output:

Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 )

oaev at mail dot ru (2004-10-21 23:48:21)

Easy way to get an array contains 5 random numbers from 0 to 9:
$rand_arr = array_rand( array_pad( array(), 10, 1 ), 5 );

(2004-02-28 21:00:40)

One way to initialize a 20x20 multidimensional array.  

<?php
$a 
= array();
$b = array();
$b array_pad($b,20,0);
$a array_pad($a,20,$b);
?>

mwwaygoo at hotmail dot com (2004-01-16 08:02:44)

little older, a little wiser.

ksort() will order the array back into its normal order again
so:

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

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

Will give : 
Array ( [0] => FILLED [1] => FILLED [2] => two [3] => FILLED [4] => four [5] => FILLED )

goffrie at sympatico dot ca (2003-03-23 17:06:54)

To daarius - you mean you have...

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

and you want...

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

If so, then the following code...

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

will return:
Array ( [0] => FILLED [1] => FILLED [2] => two [3] => three [4] => FILLED [5] => FILLED )
The ordering should be okay,...

mwwaygoo at hotmail dot com (2002-09-19 09:39:38)

OR you could do this 

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

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

This gives your desired result BUT the ordering is a little wierd, because of the order they were added. Indexes are okay though and that is what you wanted.

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

hope this helps

daarius at hotmail dot com (2002-07-23 07:36:33)

yes that is true. But, if the index of the array is 2=two, 3=three
and i want 4 more keys to be filled. But, not just filled anywhere, but i want to maintain the key index.
so, i would like to have 0=FILLED, 1=FILLED ... 4=FILLED, 5=FILLED
now i got 4 more keys padded with my string.
We can do this "if" we know the missing keys, but if we dont, then it would be nice for array_pad() or perhaps some new function to do this?
obviously we can achive this by looping through the array using array_key_exists(), and if you dont find the key, simply create + fill it.
regards,
Daarius...

scott*hurring.com (2002-07-19 16:20:08)

to the previous commenter -- if you read the manual entry, you'd see that a negative pad_size will put the pad values at the front of the array.

ethanhunt314 at hotmail dot com (2000-12-10 04:25:23)

This is useful when using next() and prev() function in a while loop to traverse an array. 

For example the following code will only output up to 8.

<?php
$test
[] = "1";
$test[] = "2";
$test[] = "3";
$test[] = "4";
$test[] = "5";
$test[] = "6";
$test[] = "7";
$test[] = "8";
$test[] = "9";
$test[] = "10";
$test[] = " ";
$test[] = " ";
$test[] = " ";

$count count($test);

while(
$i $count) {

$now current($test);
echo 
"<p>$now</p>";

next($test);
next($test);
next($test);
prev($test);
prev($test);
prev($test);


$i++;
next($test);
}
?>

But if you use:
$test = array_pad($test, 13, " ");

you will get all of your output.

易百教程