array_pad

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

array_pad指定長、指定した値で配列を埋める

説明

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

array_pad() は、length で指定した長さになるように値 value で埋めて array のコピーを返します。 length が正の場合、配列の右側が埋められます。 負の場合、配列の左側が埋められます。 length の絶対値が array の長さ以下の場合、埋める処理は行われません。 一度に追加できる要素の最大数は 1048576 です。

パラメータ

array

値を埋めるもととなる配列。

length

新しい配列のサイズ。

value

arraylength より小さいときに、 埋めるために使用する値。

戻り値

length で指定した長さになるように値 value で埋めて array のコピーを返します。 length が正の場合、配列の右側が埋められます。 負の場合、配列の左側が埋められます。 length の絶対値が array の長さ以下の場合、埋める処理は行われません。

例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");
// 埋める処理は行われません。
?>

参考

  • array_fill() - 配列を指定した値で埋める
  • range() - ある範囲の整数を有する配列を作成する

add a note

User Contributed Notes 11 notes

up
20
tugla
14 years ago
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($a, 5, 'foo'));

// use timestamps as keys
$b = array(1229600459=>'large', 1229604787=>20, 1229609459=>'red');
print_r($b);
print_r(array_pad($b, 5, '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
)
up
9
goffrie at sympatico dot ca
20 years ago
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(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);
?>

will return:
Array ( [0] => FILLED [1] => FILLED [2] => two [3] => three [4] => FILLED [5] => FILLED )
The ordering should be okay,...
up
6
scott*hurring.com
20 years ago
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.
up
5
mwwaygoo at hotmail dot com
19 years ago
little older, a little wiser.

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

<?php
$myArr
= array(2 => 'two', 4 => '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 )
up
2
Anonymous
19 years ago
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);
?>
up
-4
daarius at hotmail dot com
20 years ago
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...
up
-3
hk, StrApp Bussiness Solutions
16 years ago
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 )
up
-4
mwwaygoo at hotmail dot com
20 years ago
OR you could do this

<?php
$myArr
= array(2 => 'three', 3 => '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
up
-5
oaev at mail dot ru
18 years ago
Easy way to get an array contains 5 random numbers from 0 to 9:

$rand_arr = array_rand( array_pad( array(), 10, 1 ), 5 );
up
-5
slava-san at mail dot ru
9 years ago
// insert element to array
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);
up
-10
sonu50imedbvu at gmail dot com(Sonu Jaiswal)
12 years ago
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($input, 3, "noop");
//result is array(12, 10, 9)
?>

means array will remain the same.
To Top