problema primeros ejercicios con arrays

Iniciado por lyonsjay, 5 Mayo 2010, 10:58 AM

0 Miembros y 1 Visitante están viendo este tema.

lyonsjay

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 :)

bomba1990

Código (html4strict) [Seleccionar]
<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>

Código (php) [Seleccionar]

<?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> ";

}
?>

Código (html4strict) [Seleccionar]
</td>
  </tr>
</table>
</body>
</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.
"Cuando le di de comer a los pobres me llamaron santo, pero cuando pregunte porque los pobres eran pobres me dijeron comunista"

http://sosinformatico.blogspot.com/
http://www.publisnet.com.ve

WHK

#2
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 (php) [Seleccionar]
<?php
$notas 
= array(
 array(
3107),
 array(
853),
 array(
721),
 array(
478),
 array(
623),
 array(
'5,5''3.0''9,8')
);
?>

<html>
<head>
 <title>no tiene</title>
</head>
<body>
 <table border="5" cellpadding="1">
  <tr>
   <td width="90">Matemáticas</td>
   <td width="90">Ingles</td>
   <td width="90">Religion</td>
  </tr>
  <tr>
   <td style="text-align: center;">
    <?php
      
if(is_array($notas)){
       foreach(
$notas as $nota){
        if(
is_array($nota)){
         foreach(
$nota as $item){
          echo 
htmlspecialchars($itemENT_QUOTES);
         }
        }
       }
      }
     
?>

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


saludos.