Curso de PHP

Estás en: Sintaxis y Estructura : Array dentro de Array (Ejercicio Alumnos y Notas)

Array dentro de Array (Ejercicio Alumnos y Notas)

Ejemplo

Creamos un array con alumnos y otro con notas para obtener la nota más alta y el alumno con la nota más alta.


$array_notas = array (
"Alumno 1"=>array (1, 7, 8), 
"Alumno 2"=>array (3, 5, 7), 
);

echo "Recorremos el array sin mostrar las notas del alumno:<br />";

foreach ($array_notas as $alumno=>$notas) {
	echo $alumno.": "; //Nombre del alumno
	echo $notas;	   //Muestra la palabra "Array"
	echo "<br />";
}
	echo "<br /><br />";

// /////////////////////////////////////////////////////////
//Para sacar cada una de las notas
echo "Recorremos el array mostrando cada una de las notas del alumno:
"; foreach ($array_notas as $alumno=>$notas) { echo $alumno.": "; //Nombre del alumno foreach($notas as $nota){ echo "$nota | "; } echo "<br />"; } echo "<br /><br />"; // ///////////////////////////////////////////////////////// //Para sacar los datos en una tabla $array_notas = array ( "Alumno"=>array ("Nota1", "Nota2", "Nota3"), // Para que cree la cabecera "Alumno 1"=>array (1, 7, 8), "Alumno 2"=>array (3, 5, 7), ); echo "Recorremos el array mostrando cada una de las notas del alumno:
"; echo "<table border=1>"; //En la primera vuelta, pone los títulos foreach ($array_notas as $alumno=>$notas) { echo "<tr>"; echo "<td align=center>"; echo $alumno; //Nombre del alumno echo "</td>"; //leemos el segundo elemento del array general, que es un segundo array, por eso usamos otro foreach foreach($notas as $nota){ echo "<td align=center> $nota </td>"; } echo "</tr>"; } echo "</table>"; echo "<br /><br />"; // ///////////////////////////////////////////////////////// // OBTENER LA NOTA MEDIA DE CADA ALUMNO, LA NOTA MÁS ALTA Y EL ALUMNO QUE LA TIENE $array_notas = array ( "Alumno"=>array ("Nota1", "Nota2", "Nota3"), // Para que cree la cabecera "Alumno 1"=>array (1, 7, 8), "Alumno 2"=>array (3, 5, 7), ); $suma_notas = 0; $nota_mas_alta = 0; $alumno_nota_mas_alta =""; $primera_vez = true; echo "<table border=1>"; echo "Mostramos la nota media de cada alumno, la nota más alta de entre todos los alumnos y el alumno que la tiene"; foreach ($array_notas as $alumno=>$notas) { echo "<tr>"; echo "<td align=center> $alumno </td>"; //leemos el segundo elemento del array general, que es un segundo array, por eso usamos otro foreach $nota_media=0; $suma_notas=0; foreach($notas as $nota){ echo "<td align=center> $nota </td>"; if (!$primera_vez) { //Porque cuando es la primera vez, los datos que hay son los encabezados $suma_notas += $nota; if ($nota > $nota_mas_alta) { $nota_mas_alta=$nota; $alumno_nota_mas_alta=$alumno; } } } if ($primera_vez) echo "<td align=center> MEDIA </td>"; else { $nota_media = $suma_notas / count($notas); echo "<td align=center>".number_format($nota_media,2)."</td>"; } echo "</tr>"; $primera_vez=false; } echo "</table>"; echo "La nota más alta es: $nota_mas_alta <br />"; echo "El alumno con la nota más alta es $alumno_nota_mas_alta"; RESULTADO POR PANTALLA: Recorremos el array sin mostrar las notas del alumno: Alumno 1: Array Alumno 2: Array Recorremos el array mostrando cada una de las notas del alumno: Alumno 1: 1 | 7 | 8 | Alumno 2: 3 | 5 | 7 | Recorremos el array mostrando cada una de las notas del alumno: Alumno Nota1 Nota2 Nota3 Alumno 1 1 7 8 Alumno 2 3 5 7 Mostramos la nota media de cada alumno, la nota más alta de entre todos los alumnos y el alumno que la tiene Alumno Nota1 Nota2 Nota3 MEDIA Alumno 1 1 7 8 5.33 Alumno 2 3 5 7 5.00 La nota más alta es: 8 El alumno con la nota más alta es Alumno 1