Эффективные способы разделения массива на куски в PHP

В PHP разделение массива на более мелкие и более управляемые фрагменты — обычная задача. Если вам нужно обработать большие наборы данных или реализовать в приложении нумерацию страниц, разделение массива на более мелкие части может оказаться весьма полезным. В этой статье блога мы рассмотрим различные методы разделения массива на фрагменты с помощью PHP, а также приведем примеры кода.

Метод 1: array_chunk()
Функция array_chunk() — это встроенная функция PHP, которая позволяет разбивать массив на фрагменты заданного размера. Вот пример:

$array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
$chunks = array_chunk($array, 3);
print_r($chunks);

Выход:

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )
    [1] => Array
        (
            [0] => 4
            [1] => 5
            [2] => 6
        )
    [2] => Array
        (
            [0] => 7
            [1] => 8
            [2] => 9
        )
    [3] => Array
        (
            [0] => 10
        )
)

Метод 2: array_chunk() с save_keys
По умолчанию array_chunk() численно переиндексирует полученные фрагменты. Если вы хотите сохранить исходные ключи, вы можете передать значение trueв качестве третьего параметра. Вот пример:

$array = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
$chunks = array_chunk($array, 2, true);
print_r($chunks);

Выход:

Array
(
    [0] => Array
        (
            [a] => 1
            [b] => 2
        )
    [1] => Array
        (
            [c] => 3
            [d] => 4
        )
    [2] => Array
        (
            [e] => 5
        )
)

Метод 3: разбивка на части вручную
Если вы предпочитаете более ручной подход, вы можете использовать комбинацию функций array_slice() и array_splice() для разделения массива на части. Вот пример:

$array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
$chunkSize = 3;
$chunks = [];
while (count($array) > 0) {
    $chunk = array_slice($array, 0, $chunkSize);
    $chunks[] = $chunk;
    $array = array_splice($array, $chunkSize);
}
print_r($chunks);

Выход:

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )
    [1] => Array
        (
            [0] => 4
            [1] => 5
            [2] => 6
        )
    [2] => Array
        (
            [0] => 7
            [1] => 8
            [2] => 9
        )
    [3] => Array
        (
            [0] => 10
        )
)