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)
  • Вопрос задан
  • 2523 просмотра
Пригласить эксперта
Ответы на вопрос 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;
}
Ответ написан
Ваш ответ на вопрос

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

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