Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : Array Functions : array_pad

array_pad

Pad array to the specified length with a value (PHP 4, PHP 5)
array array_pad ( array input, int pad_size, mixed pad_value )

array_pad() 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. It is possible to add most 1048576 elements at a time.

Parameters

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.

Return Values

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.

Examples

Example 268. array_pad() example

<?php
$input
= array(12, 10, 9);

$result = array_pad($input, 5, 0);
// 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($input, 2, "noop");
// not padded
?>


Related Examples ( Source code ) » array_pad


Code Examples / Notes » array_pad

daarius

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

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.

goffrie

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,...


ethanhunt314

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 "

$now";
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.


mwwaygoo

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


29-feb-2004 05:00

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

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 )


oaev

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


hk, strapp bussiness solutions

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 )


Change Language


Follow Navioo On Twitter
array_change_key_case
array_chunk
array_combine
array_count_values
array_diff_assoc
array_diff_key
array_diff_uassoc
array_diff_ukey
array_diff
array_fill_keys
array_fill
array_filter
array_flip
array_intersect_assoc
array_intersect_key
array_intersect_uassoc
array_intersect_ukey
array_intersect
array_key_exists
array_keys
array_map
array_merge_recursive
array_merge
array_multisort
array_pad
array_pop
array_product
array_push
array_rand
array_reduce
array_reverse
array_search
array_shift
array_slice
array_splice
array_sum
array_udiff_assoc
array_udiff_uassoc
array_udiff
array_uintersect_assoc
array_uintersect_uassoc
array_uintersect
array_unique
array_unshift
array_values
array_walk_recursive
array_walk
array
arsort
asort
compact
count
current
each
end
extract
in_array
key
krsort
ksort
list
natcasesort
natsort
next
pos
prev
range
reset
rsort
shuffle
sizeof
sort
uasort
uksort
usort
eXTReMe Tracker