php[world] 2019 — 25 years of PHP

array_pad

(PHP 4, PHP 5, PHP 7)

array_pad지정한 길이만큼 특정 값으로 배열 채우기

설명

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

array_pad()pad_value 값을 pad_size 로 설정된 길이만큼을 채워넣은 input의 복사본을 반환한다. pad_size가 양수이면 배열의 오른쪽에 채워지고, 음수이면 왼쪽에 채워지게 된다. pad_size의 절대값이 input의 길이보다 작거나 같으면 패딩(padding)은 일어나지 않는다. 한번에 1048576 원소까지 추가할 수 있습니다.

인수

input

값을 채울 초기 배열.

pad_size

배열의 새 크기.

pad_value

inputpad_size보다 작으면 채울 값.

반환값

지정한 pad_size만큼 pad_value로 채운 input의 사본을 반환합니다. pad_size가 양수이면 배열 오른쪽에 채우고, 음수이면 왼쪽에 채웁니다. pad_size의 절대값이 input의 크기보다 작거나 같으면 채우지 않습니다.

예제

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

참고

  • array_fill() - 값으로 배열 채우기
  • range() - 원소의 범위를 가지는 배열 생성

add a note add a note

User Contributed Notes 11 notes

up
10
tugla
10 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
6
goffrie at sympatico dot ca
16 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
4
mwwaygoo at hotmail dot com
15 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
5
Anonymous
15 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
3
scott*hurring.com
16 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
3
daarius at hotmail dot com
16 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
0
mwwaygoo at hotmail dot com
16 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
-1
slava-san at mail dot ru
6 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
-2
oaev at mail dot ru
14 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
-2
hk, StrApp Bussiness Solutions
12 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
-7
sonu50imedbvu at gmail dot com(Sonu Jaiswal)
8 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