Коротко: «разбить массив на массивы» в PHP — это либо нарезка на части одинакового размера (array_chunk), либо группировка по признаку (своим циклом). Разберём оба случая.
Два смысла «разбить»
| Задача | Инструмент |
|---|---|
| Нарезать на части по N элементов | array_chunk() |
| Сгруппировать по значению ключа | цикл + ключ-признак |
| Разделить на две половины | array_splice() |
Вкладки: способы с кодом
$items = [1,2,3,4,5,6,7];
$chunks = array_chunk($items, 3);
// [[1,2,3],[4,5,6],[7]]Сохранить ключи: array_chunk($items, 3, true).
$rows = [
['city' => 'Москва', 'name' => 'Иван'],
['city' => 'Питер', 'name' => 'Мария'],
['city' => 'Москва', 'name' => 'Пётр'],
];
$byCity = [];
foreach ($rows as $r) { $byCity[$r['city']][] = $r; }
// ['Москва' => [...], 'Питер' => [...]]$half = array_splice($items, 0, (int) ceil(count($items) / 2));
// $half — первая половина, $items — втораяПрактика: три задачи
1. Пагинация «своими руками»
- Разбейте массив на части нужного размера.
- Выберите нужную часть по номеру страницы.
- Выведите элементы этой части.
$perPage = 10;
$pages = array_chunk($items, $perPage);
$current = $pages[$page - 1] ?? [];2. Группировка по категории
$byCat = [];
foreach ($products as $p) { $byCat[$p['category']][] = $p['name']; }3. Сортировка внутри групп
foreach ($byCity as &$group) {
usort($group, fn($a, $b) => $a['name'] <=> $b['name']);
}
unset($group);array_chunk сгруппирует по значению. Он делит по количеству, а не по смыслу. Для группировки — цикл.Частые ошибки: причина → решение
| Симптом | Причина | Решение |
|---|---|---|
| Последняя часть «обрезана» | мало элементов | это нормально для array_chunk |
| Ключи потерялись | не передан третий параметр | array_chunk($a,$n,true) |
| Группы пустые | не тот ключ-признак | проверить имя поля |
| Изменения в цикле «не видны» | перебор по значению | использовать &$group |
Проверьте себя
array_chunk отличается от array_slice?
Вопросы и ответы
Третьим параметром: array_chunk($array, $size, true).
Составным ключом: $group[$a][$b][] = $item; — получите вложенные группы.
Для нарезки array_chunk встроенный и быстрее. Для группировки по смыслу цикл незаменим.
array_chunk($array, $n, true) сохранит ключи; иначе ключи переиндексируются.
Итоги
- Части по N —
array_chunk(). - Группы по признаку — цикл с ключом.
- Проверяйте крайние случаи и сохранение ключей.

Комментарии
Пока комментариев нет — будьте первым, кто поделится мнением.