W3docs

Полное руководство по функции 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: Дополнение в конец (положительный размер)

php— editable, runs on the server

Вывод:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 0
    [4] => 0
)

Входной array $numbers содержит 3 элемента, а целевой размер — 5, поэтому 5 - 3 = 2 нуля добавляются в конец.

Пример 2: Дополнение в начало (отрицательный размер)

php— editable, runs on the server

Вывод:

Array
(
    [0] => black
    [1] => black
    [2] => red
    [3] => green
    [4] => blue
)

Размер -5 отрицательный, поэтому дополнение идёт в начало. Исходные 3 цвета сохраняют свой порядок, а abs(-5) - 3 = 2 копии 'black' добавляются спереди. Обратите внимание, что ключи переиндексируются с 0 независимо от направления.

Пример 3: Заполнение array определённым значением

php— editable, runs on the server

Вывод:

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-проектах.

Практика

Практика
Что делает функция array_pad() в PHP?
Что делает функция array_pad() в PHP?
Was this page helpful?