PHP Arrays
Changing Array Size
Problem
You want to modify the size of an array, either by making it larger or smaller than its current size.Solution
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, $array[3] and $array[4], 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.
Discussion
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';
print_r($array);
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);
No comments:
Post a Comment