Jump to content
Fórum Script Brasil
  • 0

loop em array multimensional


degui
 Share

Question

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?

Edited by degui
Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.1k
×
×
  • Create New...