Задать вопрос
paus
@paus
Backend-разработчик

Как быстро разделить массив в php?

Вообще, вопрос не привязан к php, а вообще к алоритму, но задача стоит решить эту задачку как можно меньшим количеством строчек кода и красиво.
Есть ассоциативный массив, полученный путём запроса к БД.
Т.е.

| uid | activity | work |
|-----|----------|-----------------|
| 1 | a | do something |
| 1 | b | read something |
| 2 | a | write something |
| 2 | b | blablabla |
| 2 | c | do something |
| 3 | a | read something |
| 3 | b | write something |
| 3 | c | blablabla |

Мне бы хотелось получить ассоциативный массив вот такого типа:

(1) => ((a, do something), (b, read something))

(2) => ((a, write something), (b, blablabla), (c, do something))
и так далее
Как это можно сделать?
И что делать, если в левой части не просто 1 или 2, а (1, type) или (1, type, stage)
  • Вопрос задан
  • 2525 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
array_reduce

$result = array_reduce($rows, function ($result, $row) {
    $id = array_shift($row);
     if(!isset($result[$id])) $result[$id] = [];
     $result[$id][] = $row;

     return $result;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы