Возвращает 2 значения из многомерного ассоциативного массива
принимая этот массив:
$materias= array (
array("nombre"=>"Juan","Programacion"=>8,"Redes"=>7,"Diseño Web"=>10,"Conectividad"=>9,"Idiomas"=>8),
array("nombre"=>"Sofia","Programacion"=>9,"Redes"=>10,"Diseño Web"=>6,"Conectividad"=>8,"Idiomas"=>7),
array("nombre"=>"Santiago","Programacion"=>10,"Redes"=>10,"Diseño Web"=>9,"Conectividad"=>7,"Idiomas"=>9),
array("nombre"=>"Maria","Programacion"=>11,"Redes"=>12,"Diseño Web"=>10,"Conectividad"=>9,"Idiomas"=>10),
array("nombre"=>"Damian","Programacion"=>7,"Redes"=>9,"Diseño Web"=>10,"Conectividad"=>6,"Idiomas"=>6),
);
я хочу получить максимальную оценку по предмету и показать, какому ученику она соответствует. Я попробовал array_columns
и max
и получил максимальную ноту, но не смог заставить ее показать рядом с этим имя того, кому оно соответствует.
2
1 answers
Вы на правильном пути, это быстрое решение, без дополнительных проверок в случае, если массив пуст или ключ не существует, вы также не указали, как вы будете обрабатывать, когда два или более учеников имеют одну и ту же ноту, и это максимум, так что эта часть может быть заполнена:
function getBestStudent($materias, $materia)
{
$notasMateria = array_column($materias, $materia);
arsort($notasMateria);
$resultado = 'Estudiante: ' . $materias[key($notasMateria)]['nombre'] . '<br>';
$resultado .= 'Materia: ' . $materia . ' Nota: ' . $notasMateria[key($notasMateria)];
return $resultado;
}
// En este caso para hallar la mejor nota (y estudiante) en Programacion
echo getBestStudent($materias, 'Programacion');
0
Author: Shaz, 2016-05-08 23:09:31