Como agrupar um array por campo em PHP
Agrupe registros por categoria, turma, status ou qualquer outro campo usando foreach e arrays associativos.
Agrupamento básico
$alunos = [
['nome' => 'Ana', 'turma' => '1A'],
['nome' => 'Carlos', 'turma' => '1B'],
['nome' => 'Daniel', 'turma' => '1A'],
];
$porTurma = [];
foreach ($alunos as $aluno) {
$porTurma[$aluno['turma']][] = $aluno;
}
O resultado terá uma chave para cada turma e, dentro dela, os respectivos alunos.
Formato do resultado
[
'1A' => [
['nome' => 'Ana', 'turma' => '1A'],
['nome' => 'Daniel', 'turma' => '1A'],
],
'1B' => [
['nome' => 'Carlos', 'turma' => '1B'],
],
]
Agrupar por dois níveis
$resultado = [];
foreach ($alunos as $aluno) {
$resultado[$aluno['escola']][$aluno['turma']][] = $aluno;
}
Quando a chave pode não existir
$grupo = $item['categoria'] ?? 'SEM_CATEGORIA';
$agrupados[$grupo][] = $item;
Assuntos:agrupararrayforeach