Problema al generar la media de un array

Iniciado por splendid37, 13 Enero 2019, 19:13 PM

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

splendid37

Tengo un problema al generar la media de un array ya que no me lo muestra en pantalla o no estoy haciendo algo bien.

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 (php) [Seleccionar]


<?php session_start();?>

<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(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(10010 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 :