You want to modify the size of an array, either by making it larger or smaller than its current size.
Use array_pad( )
to make an array grow:
// start at three $array = array('apple', 'banana', 'coconut'); // grow to five $array = array_pad($array, 5, '');
Now, count($array)
is 5
, and
the last two elements contain the empty string.
To reduce an array, you can use array_splice( )
:
// no assignment to $array array_splice($array, 2);
This removes all but the first two elements from
$array
.
Arrays aren’t a predeclared size in PHP, so you can resize them on the fly.
To
pad
an array, use array_pad( )
. The first argument is
the array to be padded. The next argument is the size and direction
you want to pad. To pad to the right, use a positive integer; to pad
to the left, use a negative one. The third argument is the value to
be assigned to the newly created entries. The function returns a
modified array and doesn’t alter the original.
Here are some examples:
// make a four-element array with 'dates' to the right $array = array('apple', 'banana', 'coconut'); $array = array_pad($array, 4, 'dates'); print_r($array); Array ( [0] => apple [1] => banana [2] => coconut [3] => dates ) // make a six-element array with 'zucchinis' to the left $array = array_pad($array, -6, 'zucchini'); print_r($array); Array ( [0] => zucchini [1] => zucchini [2] => apple [3] => banana [4] => coconut [5] => dates )
Be careful. array_pad($array, 4, 'dates')
makes
sure an $array
is at least
four elements long, it doesn’t add four
new elements. In this case, if
$array
was already four elements or larger,
array_pad( )
would return an unaltered
$array
.
Also, if you declare a value for a fourth element,
$array[4]
:
$array = array('apple', 'banana', 'coconut'); $array[4] = 'dates';
you end up with a four-element array with indexes
0
, 1
, 2
, and
4
:
Array ( [0] => apple [1] => banana [2] => coconut [4] => dates )
PHP essentially turns this into an associative array that happens to have integer keys.
The array_splice( )
function, unlike array_pad( )
, has the side-effect
of modifying the original array. It returns the spliced out array.
That’s why you don’t assign the
return value to $array
. However, like
array_pad( )
, you can splice from either the right
or left. So, calling array_splice( )
with a value
of -2
chops off the last two elements from the
end:
// make a four-element array $array = array('apple', 'banana', 'coconut', 'dates'); // shrink to three elements array_splice($array, 3); // remove last element, equivalent to array_pop( ) array_splice($array, -1); // only remaining fruits are apple and banana print_r($array); Array ( [0] => apple [1] => banana )
Documentation on array_pad( )
at
http://www.php.net/array-pad and
array_splice( )
at
http://www.php.net/array-splice.
Get PHP Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.