array_pad

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

array_padExpande um array para um certo comprimento utilizando um determinado valor

Descrição

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

array_pad() retorna uma cópia de array expandido para o comprimento especificado por length com o valor value. Se length for positivo então o array é expandido pela direita, se for negativo, pela esquerda. Se o valor absoluto de length for menor ou igual ao comprimento de array, então ele permanece inalterado.

Parâmetros

array

Array inicial de valores para ser preenchido.

length

Nova tamanho do array.

value

Valor para preencher se array é menor que length.

Valor Retornado

Retorna uma cópia de array preenchido pela quantidade especificada por length com o valor value. Se length é positivo, então o array é preenchido na direita, se ele é negativo, então da esquerda. Se o valor absoluto de length é menor que ou igual ao comprimento de array então nenhum preenchimento ocorre.

Registro de Alterações

Versão Descrição
8.3.0 Antes do PHP 8.3.0, somente 1.048.576 elementos podiam ser adicionados de uma vez. Agora é limitado apenas pelo tamanho máximo de um array.

Exemplos

Exemplo #1 Exemplo de 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");
// Não será expandido
?>

Veja Também

  • array_fill() - Preenche um array com valores
  • range() - Cria um array contendo uma faixa de elementos

adicione uma nota

Notas Enviadas por Usuários (em inglês) 8 notes

up
21
tugla
15 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
11
goffrie at sympatico dot ca
21 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
7
scott*hurring.com
22 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
6
mwwaygoo at hotmail dot com
20 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
20 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
-1
hk, StrApp Bussiness Solutions
17 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
-2
daarius at hotmail dot com
22 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
mwwaygoo at hotmail dot com
22 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
To Top