Полное руководство по функции array_pad в PHP
Функция array_pad в PHP возвращает копию array, дополненную до нужной длины указанным значением. Разбираем синтаксис, примеры и особенности поведения.
Array является основой почти каждой PHP-программы, и иногда требуется, чтобы array имел гарантированную длину — дополненный значениями-заглушками, если элементов не хватает. Функция array_pad в PHP делает именно это: возвращает копию array, расширенную до целевого размера, заполняя новые позиции значением по вашему выбору. В этом руководстве рассматриваются синтаксис, влияние знака размера на направление дополнения, неочевидные аспекты поведения и запускаемые примеры.
Что делает функция array_pad
array_pad возвращает новый array, дополненный до указанной длины. Поведение определяется двумя правилами:
- Если запрошенный размер больше исходного, копии значения дополнения добавляются — в конец, если размер положительный, или в начало, если он отрицательный.
- Если запрошенный размер меньше или равен текущей длине array, он возвращается без изменений.
array_padникогда не удаляет элементы.
Исходный array не изменяется; вы работаете с возвращаемым значением.
Синтаксис функции array_pad
array_pad(array $array, int $length, mixed $value): array$array: Входной array, который нужно дополнить. Он не изменяется.$length: Целевой размер. Положительное значение дополняет справа (в конец); отрицательное — слева (в начало). Количество добавляемых элементов равноabs($length) - count($array).$value: Значение для каждого добавляемого элемента. Может быть любого типа, включая другой array.
Случаи применения функции array_pad
Функция array_pad удобна, когда нужно:
- Гарантировать, что array содержит не менее N элементов перед итерацией по фиксированным позициям.
- Выровнять данные по правому или левому краю, дополняя противоположную сторону.
- Заполнить фиксированную сетку, форму или строку таблицы значениями по умолчанию.
Примеры использования функции array_pad
Несколько примеров того, как функция array_pad может применяться в реальных сценариях:
Пример 1: Дополнение в конец (положительный размер)
Вывод:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 0
[4] => 0
)Входной array $numbers содержит 3 элемента, а целевой размер — 5, поэтому 5 - 3 = 2 нуля добавляются в конец.
Пример 2: Дополнение в начало (отрицательный размер)
Вывод:
Array
(
[0] => black
[1] => black
[2] => red
[3] => green
[4] => blue
)Размер -5 отрицательный, поэтому дополнение идёт в начало. Исходные 3 цвета сохраняют свой порядок, а abs(-5) - 3 = 2 копии 'black' добавляются спереди. Обратите внимание, что ключи переиндексируются с 0 независимо от направления.
Пример 3: Заполнение array определённым значением
Вывод:
Array
(
[0] => a
[1] => b
[2] => c
[3] => z
[4] => z
[5] => z
[6] => z
)Входной array содержит 3 элемента, а целевой размер — 7, поэтому 7 - 3 = 4 копии 'z' добавляются в конец.
Особенности и граничные случаи
Несколько аспектов поведения, которые застают людей врасплох:
- Функция никогда не уменьшает array. Если
abs($length)меньше или равно текущему количеству элементов, array возвращается без изменений. Для удаления элементов используйтеarray_sliceилиarray_splice. - String-ключи сохраняются, но добавляемые элементы всегда получают числовые ключи. При дополнении ассоциативного array существующие string-ключи сохраняются, а новые элементы получают последовательные целочисленные ключи:
<?php
$scores = array('math' => 90, 'science' => 85);
print_r(array_pad($scores, 4, 0));
?>Array
(
[math] => 90
[science] => 85
[0] => 0
[1] => 0
)- Значение дополнения может быть любого типа. Передача array в качестве
$valueвставляет копии этого целого array, что полезно при построении сеток из строк по умолчанию. - Дополнение фиксированное, а не интерполированное. Каждая новая позиция получает одно и то же
$value. Если нужно сгенерированное или последовательное заполнение, используйтеarray_fillилиrange().
Связанные функции
array_fill— создать новый array, полностью заполненный одним значением.array_merge— объединить array вместо дополнения одного из них.array_sliceиarray_splice— извлечь или удалить части array.array_chunk— разбить дополненный array на группы фиксированного размера.
Заключение
array_pad — это самый быстрый способ гарантировать, что array имеет заданную длину, без написания цикла. Запомните два правила, определяющих его поведение: положительный размер дополняет конец, отрицательный — начало, а размер, равный или меньший текущей длине, оставляет array без изменений. Зная это, а также учитывая обработку ключей и граничные случаи, описанные выше, вы можете смело использовать array_pad всякий раз, когда вам нужны предсказуемые array фиксированного размера в ваших PHP-проектах.