Jump to content

Arrays e ciclos


Recommended Posts

Posted (edited)

Boas pessoal,

Sou aluno de redes, só que como trabalho e não tive outra hipótese o meu estágio é a programar em casa e não tenho experiencia nenhuma em php, só mesmo o básico.

Alguém me pode ajuda! 😞 ando a dias a tentar fazer um ciclo, array para isto. 😞 alguém me pode indicar o código correto para isto, fico agradecido.

echo '<table id=geral >
<tr><th>Questão</th><th>Descrição</th><th>Média</th><th>Mediana</th><th>Desvio</th></tr>';

echo "<tr><td>1</td><td>Modo como decorreu</td><td>". number_format($mq1,3)."</td>
<td><center>".$mediana1."</center></td><td><center>". number_format($dp1,3). "</center></td></tr>";
echo "<tr class='alt'><td>2</td><td>Desempenho</td><td>". number_format($mq2,3)."</td>
<td><center>".$mediana2."</center></td><td><center>". number_format($dp2,3). "</center></td></tr>";

echo '</table><br>';

O objetivo é dar uma tabela com o cabeçalho a dizer Questão, Descrição, media, mediana e desvio e por baixo os numero da questão, descrição no primeiro exemplo é Modo como correu e valores media etc, assim como está funciona, só que me mandaram fazer um ciclo. Mas tem <tr> e <th> e isso complica para mim que não sei praticamente nada de php.

Se alguém puder indicar o código agradeço. 😞

Edited by asom
geshi
Posted

fazer um ciclo sem a existência do array que irá alimentar-lo não só é estranho como desnecessário

no entanto o que deverias ter seria:

$array = array();
$array[] = array(/* os teus dados */); // cabeçalho
$array[] = array(/* dados da primeira linha */);
$array[] = array(/* dados da segunda linha */);
//...

$html = '<table>';
foreach ($array as $key => $record)
{
 $html .= '<tr>';
 foreach ($record as $column)
 {
   $html .= $key ? '<td>'.$column.'</td> : '<th>'.$column.'</th> ;
 }
 $html .= '</tr>';
}
$html .= '</table>';

echo $html;
IRC : sim, é algo que ainda existe >> #p@p
Posted (edited)

O meu primeiro conselho, seria não usares echos para contruir esta tabela, colocar o código PHP no meio do HTML onde as variaveis irão mudar.

O $mediana, $mq, e $dp são arrays? Ou variáveis individuais?

Se são Arrays, qualquer coisa como isto.

$numerototaldequestões = 10;
$cabecalhos = array("Modo como decorreu", "Desempenho", "...");
$mq = array(45.0987, 78.96543, ...);
$dp = array(45.0987, 78.96543, ...);
<table id=geral>
<tr><th>Questão</th><th>Descrição</th><th>Média</th><th>Mediana</th><th>Desvio</th></tr>
for($i = 0, $i < ($numerototaldequestoes), $i++) {
?>
<tr>
	 <td><?php echo $i + 1?></td>
	 <td><?php echo $cabecalhos[$i]?></td>
	 <td><?php echo number_format($mq[$i], 3)</td>
	 <td><center><?php echo $mediana[$i]</center></td>
	 <td><center><?php echo number_format($dp[$i], 3)</center></td>
</tr>
<?php
}
?>
</table>
<br>
Edited by ICETuga
Posted

São variaveis $mediana, $mq, e $dp individuais Icetuga, podes me ajudar. 😞

É mais ou menos o que quero o que indicaste, na linha $dp = array(45,0987, 78,96543, ...); da-me um erro Parse error: syntax error, unexpected '.', expecting ')' in C:\wamp\www\resultados.php on line 84

Posted

São variaveis $mediana, $mq, e $dp individuais Icetuga, podes me ajudar. 😞

É mais ou menos o que quero o que indicaste, na linha $dp = array(45,0987, 78,96543, ...); da-me um erro Parse error: syntax error, unexpected '.', expecting ')' in C:\wamp\www\resultados.php on line 84

Pois dá. Primeiro eu enganei-me e onde está ,(virgula) a separar os decimais será .(ponto), e tens de substituir os ... pelos valores que queres, os 3 pontos era só para indicar que o array continuava.

Se são variáveis individuais eu transformaria primeiro num array....

Qualquer coisa como: $arraymq = array($mq1, $mq2, etc.);

Trabalhar num ciclo For com variáveis individuais será mais complicado.

Posted

Não apaguei e coloquei 1, 2. ou seja para dar por exemplo $dp1 e $dp2

podes dizer o que quiseres, mas não "insultes" a inteligência dos outros:

olha bem para a mensagem de erro:

Parse error: syntax error, unexpected '.', expecting ')' in C:\wamp\www\resultados.php on line 84 

ele disse que encontrou um ponto onde não deveria ser

agora olha para a linha de código:

$dp = array(45,0987, 78,96543, ...);

onde estão os pontos ? pois ...

-------

já que queres a papinha toda mastigada sendo então abrir a boca e enfiar pela traqueia abaixo:

$array = array();
$array[] = array('Questão', 'Descrição', 'Média', 'Mediana', 'Desvio'); // cabeçalho
$array[] = array(1, 'Modo como decorreu', number_format($mq1,3), $mediana1, number_format($dp1,3));
$array[] = array(2, 'Desempenho', number_format($mq2,3), $mediana2, number_format($dp2,3));
//...

$html = '<table>';
foreach ($array as $key => $record)
{
 $html .= '<tr>';
 foreach ($record as $column)
 {
   $html .= $key ? '<td>'.$column.'</td> : '<th>'.$column.'</th> ;
 }
 $html .= '</tr>';
}
$html .= '</table>';

echo $html;
IRC : sim, é algo que ainda existe >> #p@p
Posted (edited)

Boas Happy,

Agradeço na mesma mas já resolvi com algumas alterações no codigo do ice cheguei lá.

E como tens não é o que pretendo mas obrigado na mesma.

Porque não vejo vantagem colocar $array[] = array(2, 'Desempenho', number_format($mq2,3), $mediana2, number_format($dp2,3)); se precisar de 30 x tinha que colocar 30x $mq2, $mq3, $mq4 etc.

E não não quero a papa toda, porque o ice deu-me uma ajuda e consegui chegar ao que queria com algumas alterações.

Obrigado a todos.

Edited by asom

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.