Ir para conteúdo
Fórum Script Brasil
  • 0

loop em array multimensional


degui

Pergunta

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
)

)

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 acima
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?

Editado por degui
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Bom dia  , 

 

 

Amigo , meio estranho essa sua tabela. 

 

Estou atrasado para o serviço , mas testei aqui e funcionou. Veja se te ajuda.

 

$funcao[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
);

$funcao[1] =  array(cod_aluno => 1498,
cod_trimestre => 1,
cod_disc => 430,
aluno => 'MIKAEL',
cod_turma => 66,
turma => '1º V02',
disciplina => 'Quimica',
nota => 3.00
);

$funcao[2] =  array(cod_aluno => 1498,
cod_trimestre => 1,
cod_disc => 430,
aluno => 'MIKAEL',
cod_turma => 66,
turma => '1º V02',
disciplina => 'Filosofia',
nota => 5.00
);


echo ' <table class="table table-striped table-bordered table-hover">
			<thead>
				<tr>
					<th>
						Aluno
					</th>
					<th>
						Disciplina
					</th>
					<th>
						Trimestre 1
					</th>
					<th>
						Trimestre 2
					</th>
					<th>
						Trimestre 3
					</th>
				</tr>
			</thead>
			<tbody>';
			
			echo '<tr>
					<td rowspan="3" style="text-align:left;font-size:120%;color:black;font-weight:bold;width:20%;" >
						'.$funcao[0]['aluno'].'
					</td>
					<td> 
						'.$funcao[0]['disciplina'].'
					</td>
					<td> 
						'.$funcao[0]['nota'].'
					</td>
					<td> 
						'.$funcao[0]['nota'].'
					</td>
					<td> 
						'.$funcao[0]['nota'].'
					</td>
				</tr>'; 
			
			for($i = 1; $i <= count($funcao) - 1; $i++){
				
			echo '<tr>
					<td> 
						'.$funcao[$i]['disciplina'].'
					</td>
					<td> 
						'.$funcao[$i]['nota'].'
					</td>
					<td> 
						'.$funcao[$i]['nota'].'
					</td>
					<td> 
						'.$funcao[$i]['nota'].'
					</td>
				</tr>';
			}
			
		echo '</tbody>
		</table>';

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...