Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: lyonsjay en 5 Mayo 2010, 10:58 am



Título: problema primeros ejercicios con arrays
Publicado por: lyonsjay en 5 Mayo 2010, 10:58 am
Hola a todo el mundo, recientemente he empezado con php de manera autodidacta y necesito una pequeña ayuda para poder seguir avanzando ya que hasta en los ejercicios más simples me quedo estancado.

os paso a explicar mi problema, estoy creando una tabla en la cual se muestren las notas de un alumno por trimestre y asignatura. para ello he utilizado una estructura array, el problema me surge cuando quiero ordenar cada grupo de 3 notas (primer,segundo y tercer trimestre) debajo de la correspondiente asignatura, pues solo soy capaz de hacer que lea toda las notas de manera consecutiva,. se que alterando el primer FOR puedo hacer que solo se muestren 3 de los resultados alterando la condicion $i<5 por $i<1  y se también que inicializando la variable $i=0 (en el mismo bucle for) puedo hacer que lea otro de los indices del array $i=1 (así aparecerían las notas apartir de la segunda asignatura.

Para que me entendais mejor os paso el código a ver si alguien se le ocurre como conseguir que funcione cada tres notas de cada nota de cada trimestre debajo de su asignatura. (de momento solo he puesto matemáticas ee inglés, una vez sepa colocar las de ingles debajo pasaré a implementar las demas)


<html>
<head>
<title>no tiene</title>

</head>
<body>

<table width="390" border="5" cellpadding="1">
  <tr>
    <td>
      <table border="3" cellpadding="1">
         <tr>
            <td width="90">Matemáticas</td>
            <td width="90">ingles</td>
         </tr>
      </table>
     </td>
  </tr>

  <tr>
    <td>
<?php

$notas = array(0=>array(0=>3,1=>10,2=>7),
            1=>array(0=>8,1=>5,2=>3),
            2=>array(0=>7,1=>2,2=>1),
            3=>array(0=>4,1=>7,2=>8),
            4=>array(0=>6,1=>2,2=>3));

for($i=0;$i<5;$i++)//este bucle for dice que lea los 5 arrays empezando por el primero
{
for($j=0;$j<3;$j++)//esta parte dice que lea 3 notas dentro de cada array

echo "<table width='100' border='3' cellpadding='1'><tr><td><center>-".$notas[$i][$j]." - </center></td></tr></table> ";

}
?>
</td>
  </tr>
</table>
</body>
</html>


Se agradece cualquier tipo de aportacion, comentario o idea :)


Título: Re: problema primeros ejercicios con arrays
Publicado por: bomba1990 en 5 Mayo 2010, 16:32 pm
Código
  1. <title>no tiene</title>
  2.  
  3. </head>
  4.  
  5. <table width="390" border="5" cellpadding="1">
  6.  <tr>
  7.    <td>
  8.      <table border="3" cellpadding="1">
  9.         <tr>
  10.            <td width="90">Matemáticas</td>
  11.            <td width="90">ingles</td>
  12.         </tr>
  13.      </table>
  14.     </td>
  15.  </tr>
  16.  
  17.  <tr>
  18.    <td>
Código
  1. <?php
  2.  
  3. $notas = array(0=>array(0=>3,1=>10,2=>7),
  4.            1=>array(0=>8,1=>5,2=>3),
  5.            2=>array(0=>7,1=>2,2=>1),
  6.            3=>array(0=>4,1=>7,2=>8),
  7.            4=>array(0=>6,1=>2,2=>3));
  8.  
  9. for($i=0;$i<5;$i++)//este bucle for dice que lea los 5 arrays empezando por el primero
  10. {
  11. for($j=0;$j<3;$j++)//esta parte dice que lea 3 notas dentro de cada array
  12.  
  13. echo "<table width='100' border='3' cellpadding='1'><tr><td><center>-".$notas[$i][$j]." - </center></td></tr></table> ";
  14.  
  15. }
  16. ?>
Código
  1. </td>
  2.  </tr>
  3. </body>
  4. </html>[








bueno, no entiendo muy bien lo que vas a ahcer, pero te recomiendo es que utilizes la funcion foreach que quizas te sirve mejor que la que estas usando ahorita.


Título: Re: problema primeros ejercicios con arrays
Publicado por: WHK en 5 Mayo 2010, 19:56 pm
intenta usar mejor un foreach y arriba te faltó una columna en la tabla, además no se para que usas una tabla dentro de otra tabla, además los arrays cuando son indices numérios en orden no necesitas declararlos, tampoco necesitas declarar el ancho de la tabla si ya declaraste el ancho de las columnas.

Código
  1. <?php
  2. $notas = array(
  3. array(3, 10, 7),
  4. array(8, 5, 3),
  5. array(7, 2, 1),
  6. array(4, 7, 8),
  7. array(6, 2, 3),
  8. array('5,5', '3.0', '9,8')
  9. );
  10. ?>
  11. <html>
  12. <head>
  13.  <title>no tiene</title>
  14. </head>
  15. <body>
  16.  <table border="5" cellpadding="1">
  17.   <tr>
  18.    <td width="90">Matemáticas</td>
  19.    <td width="90">Ingles</td>
  20.    <td width="90">Religion</td>
  21.   </tr>
  22.   <tr>
  23.    <td style="text-align: center;">
  24.     <?php
  25.      if(is_array($notas)){
  26.       foreach($notas as $nota){
  27.        if(is_array($nota)){
  28.         foreach($nota as $item){
  29.          echo htmlspecialchars($item, ENT_QUOTES);
  30.         }
  31.        }
  32.       }
  33.      }
  34.     ?>
  35.    </td>
  36.   </tr>
  37.  </table>
  38. </body>
  39. </html>

saludos.