16/10/2015

Loop em array multidimensional

Tenho um array multidimensional, que é resultado de uma busca no banco de dados

Preciso ordenar de uma forma estruturada...


Turma: 1º V02

Aluno: Mikael
Disciplina ---------- Trim1--------Trim2-------Trim3
Matemática --------- 1 ------------ 3 ------------- 5
Química ------------- 1 ------------ 9 ------------- 7
Filosofia ------------- 1 ------------ 5 ------------- 6

Aluno: Vinícius
Disciplina ---------- Trim1--------Trim2-------Trim3
Matemática --------- 1 ------------ 3 ------------- 5
Química ------------- 1 ------------ 9 ------------- 7
Filosofia ------------- 1 ------------ 5 ------------- 6

*****

Turma: 2º V01

Aluno: Marcos
Disciplina ---------- Trim1--------Trim2-------Trim3
Matemática --------- 1 ------------ 3 ------------- 5
Química ------------- 1 ------------ 9 ------------- 7
Filosofia ------------- 1 ------------ 5 ------------- 6


A estrutura do array é essa abaixo
Note que só uso no exemplo abaixo 1 Trimestre, Um aluno, uma turma e três disciplinas
No resultado geral do banco, esses valores vão variar, ou seja, terei vários alunos, de diversas turmas, com notas variadas em trimestres diferentes e para diversas disciplinas, mas a estrutura do array será a mesma, só aumentará a quantidade de dados

Pelo que percebo, precisarei de um loop para as turmas, um loop nos alunos, um loop de disciplinas e outro para notas.


Obs.:
Esses valores são resultado de um único select - com inner join
Quero evitar várias requisições ao banco, mas talvez seja melhor usar mais que um select... não sei exatamente.

A pergunta é, qual a melhor maneira de exibir esses dados na estrutura indicada acima, usando PHP?


Array (
[0] => Array
(
[cod_aluno] => 1498
[cod_trimestre] => 1
[cod_disc] => 430
[aluno] => MIKAEL
[cod_turma] => 66
[turma] => 1º V02
[disciplina] => Matemática
[nota] => 1.00
)

[1] => Array
(
[cod_aluno] => 1498
[cod_trimestre] => 1
[cod_disc] => 507
[aluno] => MIKAEL
[cod_turma] => 66
[turma] => 1º V02
[disciplina] => Química
[nota] => 1.00
)

[2] => Array
(
[cod_aluno] => 1498
[cod_trimestre] => 1
[cod_disc] => 514
[aluno] => MIKAEL
[cod_turma] => 66
[turma] => 1º V02
[disciplina] => Filosofia
[nota] => 1.00
)

Degui