PHP и серверы

Разбить массив на массивы PHP

Разбить массив на массивы PHP 📅 ⏱ 22:07 ⏳ 1 мин 💬 0

Разбить массив на массивы php: простыми словами, по шагам и с примерами. Разбираем, как это работает на практике, типичные ошибки и лучшие решения. Раскрываем т

Разбить массив на массивы PHP

Коротко: «разбить массив на массивы» в PHP — это либо нарезка на части одинакового размера (array_chunk), либо группировка по признаку (своим циклом). Разберём оба случая.

Кому и зачемНужно для пагинации, группировки данных по городу/категории, разбивки на «порции» при обработке. Материал для тех, кто уже знаком с массивами PHP.

Два смысла «разбить»

Задача Инструмент
Нарезать на части по N элементов array_chunk()
Сгруппировать по значению ключа цикл + ключ-признак
Разделить на две половины array_splice()

Вкладки: способы с кодом



CODE
$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).

CSS
$rows = [
  ['city' => 'Москва', 'name' => 'Иван'],
  ['city' => 'Питер',  'name' => 'Мария'],
  ['city' => 'Москва', 'name' => 'Пётр'],
];
$byCity = [];
foreach ($rows as $r) { $byCity[$r['city']][] = $r; }
// ['Москва' => [...], 'Питер' => [...]]

CODE
$half  = array_splice($items, 0, (int) ceil(count($items) / 2));
// $half — первая половина, $items — вторая

Практика: три задачи

1. Пагинация «своими руками»

  1. Разбейте массив на части нужного размера.
  2. Выберите нужную часть по номеру страницы.
  3. Выведите элементы этой части.
CODE
$perPage = 10;
$pages = array_chunk($items, $perPage);
$current = $pages[$page - 1] ?? [];

2. Группировка по категории

CSS
$byCat = [];
foreach ($products as $p) { $byCat[$p['category']][] = $p['name']; }

3. Сортировка внутри групп

CSS
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().
  • Группы по признаку — цикл с ключом.
  • Проверяйте крайние случаи и сохранение ключей.
Поделиться: ВКонтакте Telegram WhatsApp Одноклассники Viber Мой Мир

Комментарии

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

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Получите консультацию нашего маркетолога

Изучит ваш проект, подберет подходящие услуги и тарифы

Получите бесплатный аудит

Наш специалист сделает базовый аудит вашего проекта и предложит персональные предложения.

Закажите услугу Каталог морепродуктов

Наш специалист свяжется с вами в ближайшее время и уточнит детали

Закажите адаптивный сайт

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите сайт

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите сайт лендинг

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите сайт каталог

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите интернет-магазин

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите веб-приложение

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите тариф Аутсорс

Стоимость от 150 000 ₽

Закажите тариф Магазин

Стоимость 90 000 ₽

Закажите тариф Классический

Стоимость 60 000 ₽

Закажите тариф Эконом

Стоимость 40 000 ₽

Закажите SEO продвижение

Наш специалист свяжется с вами, проведет анализ, предложит стоимость