El siguiente código muestra un formulario que al escribir '1' y enviar se imprime una lista de alumnos con sus notas, las notas se generan aleatoriamente en las funciones 'notaDificultadBaja()' y 'notaDificultadMedia()' y estas notas se guardan en el array $datos['notas'].
La última funcion llamada 'calculoNotasMedia()' la que esta con comentarios es la que tendría que generar las notas medias pero no me imprime nada por pantalla y en otros arrays si que me funciona.
Código
<html> <body> <form action="simuladorExamenes.php" method= "get"> Opción: <input type = "text" name ="opcion"> <input type = "submit"> </form> <?php if($_GET['opcion'] == 1){ imprimeListaAlumnosNotas(); } if(!existenDatosEnSesion()){ inicializaDatos(); } function existenDatosEnSesion(){ return $_SESSION['datos'] != NULL; } function inicializaDatos(){ $persona1= [ 'nombre' => 'persona1', 'notas' => [] ]; $persona2= [ 'nombre' => 'persona2', 'notas' => [] ]; $persona3= [ 'nombre' => 'persona3', 'notas' => [] ]; $datos=[$persona1, $persona2, $persona3]; $_SESSION['datos'] = $datos; } function notaDificultadBaja(){ $datos = $_SESSION['datos']; foreach ($datos as $key => $value) { $datos[$key]['notas'] = random_int(5 * 100 , 10 * 100) / 100; } echo "<td>",$datos[$key]['notas'],"</td>"; } function notaDificultadMedia(){ $datos = $_SESSION['datos']; foreach ($datos as $key => $value) { $datos[$key]['notas'] = random_int(0 * 100, 10 * 100) / 100; } echo "<td>",$datos[$key]['notas'],"</td>"; } function imprimeListaAlumnosNotas(){ $datos = $_SESSION['datos']; echo "<div class='Encabezado'>"; echo "<h2>Lista de Alumnos y notas </h2>"; echo "</div>"; echo "<table>"; echo "<tr>"; echo "<th>Nombre</th>"; echo "<th>E0</th>"; echo "<th>E1</th>"; echo "<th>Media</th>"; echo "</tr>"; foreach ( $datos as $alumno ) { echo "<tr>"; echo "<td>",$alumno['nombre']," ","</td>"; notaDificultadBaja(); notaDificultadMedia(); //calculoNotasMedia($alumno['notas']); echo "</tr>"; } echo "<tr>"; echo "<td>"; echo "<br>"; echo "<b>Notas Medias</b>"; echo "<td/>"; echo "<tr/>"; echo "</table>"; } /*function calculoNotasMedia($pArrayNotas) { $sumaNotas = 0; $numNotas = 0; foreach ( $pArrayNotas as $unaNota ) { $numNotas++; $sumaNotas += $unaNota; } return $sumaNotas/$numNotas; }*/ ?> </body> </html>
Si todo funcionase bien quería que me imprimiese esto :