Изменение длины массива

Задача
Необходимо модифицировать длину массива, сделав его больше или меньше текущей длины.

Решение
Для расширения массива применяется функция array_pad():

// начинаем с трех
$array = array('apple', 'banana', 'coconut');

// увеличиваем до пяти
$array = array_pad($array, 5, '');

Теперь значение функции count($array) равно 5, а последние два элемента содержат пустые строки.

Чтобы сократить массив, можно использовать функцию array_splice():

// нет присваивания массиву $array
array_splice($array, 2);

Из массива $array удаляется все, за исключением двух элементов.

Обсуждение
Размер массивов в PHP заранее не объявляется, поэтому можно менять его по ходу дела.

Для заполнения массива используйте функцию array_pad(). В качестве первого аргумента выступает сам заполняемый массив. Следующий аргумент – это размер и направление заполнения. Для заполнения массива вправо используйте положительное число; для заполнения массива влево используйте отрицательное число. Третий аргумент – это значение, присваиваемое вновь созданным элементам.


Функция возвращает модифицированный массив и не затрагивает исходный.

Ниже приведено несколько примеров:

// создаем четырехэлементный массив со значением 'dates' справа
$array = array('apple', 'banana', 'coconut');
$array = array_pad($array, 4, 'dates');
print_r($array);
Array
(
[0] => apple
[1] => banana
[2] => coconut
[3] => dates
)
// создаем шестиэлементный массив со значением 'zucchinis' слева
$array = array_pad($array, -6, 'zucchini');
print_r($array);
Array
(
[0] => zucchini
[1] => zucchini
[2] => apple
[3] => banana
[4] => coconut
[5] => dates
)

Будьте внимательны. Выражение array_pad($array, 4, 'dates') обеспечивает длину массива, по крайней мере, равную 4, а не добавляет 4 новых элемента. В этом случае, если массив $array уже содержал четыре или больше элементов, то функция array_pad() возвратит неизмененный массив $array.

Также, если объявить значение для четвертого элемента, $array[4]:

$array = array('apple', 'banana', 'coconut');
$array[4] = 'dates';
то в результате получится четырехэлементный массив с индексами 0,
1, 2, and 4:
Array
(
[0] => apple
[1] => banana
[2] => coconut
[4] => dates
)

По существу, PHP превращает его в ассоциативный массив, который, оказывается, имеет целочисленные ключи.Функция array_splice(), в противоположность функции array_pad(), изменяет исходный массив с одной или с другой стороны.


Она возвращает полученный после наложения изменения массив. Вот почему массиву $array не присваивается значение. Однако, как и в случае с функцией array_pad(), можно применить наложение справа или слева. Поэтому вызов функции array_splice() со значением –2 удалит два эле-
мента с конца:

// создаем четырехэлементный массив
$array = array('apple', 'banana', 'coconut', 'dates');

// сокращаем до трех элементов
array_splice($array, 3);

// удаляем последний элемент, эквивалентно вызову функции array_pop()
array_splice($array, -1);

// единственные оставшиеся фрукты – это яблоко и банан
print_r($array);
Array
(
[0] => apple
[1] => banana
)

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Добавление одного массива к другому
Инициализация массива диапазоном
Инициализация массива диапазоном целых чисел
Нахождение всех перестановок массива
Нахождение элемента массива с наибольшим или наименьшим значением

Вернуться в раздел: PHP / 4. Массивы