Solamente puse el caso para una lista impar porque era la que Miriam indicó, en el caso de listas pares, debes sumar los valores de los dos elementos centrales y luego divides dicho resultado entre dos. En el ejemplo, eso sería
(($alumnos[$posMediana] + $alumnos[$posMediana - 1]) / 2) - 1. Como no hay posiciones en decimales, se toma el entero más cercano.
Dicho esto y actualizando el algoritmo, quedaría así:
Código PHP:
Ver originalfor ($i = 0; $i < 9; $i++) $alumnos[] = mt_rand(1, 7); echo "Datos: " . implode(", ", $alumnos) . "\r\n";
$cantidad = count($alumnos); $posMediana = ($cantidad + 1) / 2;
echo "Mediana: " . $cantidad % 2 != 0 ? $alumnos[$posMediana - 1] : (($alumnos[$posMediana - 1] + $alumnos[$posMediana]) / 2) - 1;
Como consejo, es mejor que, cuando trabajes con arrays, los hagas empezando desde la posición cero, como naturalmente es.
Saludos