Как я могу пройти через ассоциативный массив с несколькими значениями - PullRequest
0 голосов
/ 04 июня 2019

Я только начал изучать php, и у меня есть эта проблема.Я пытаюсь перебрать этот массив, чтобы получить общее значение каждого ключа и вывести студента с наибольшим числом.Буду очень признателен за ваш вклад

$students = array(
        'Mary' => [20,45,12],
        'Grace' => [40,78,56],
        'John' => [61,37,58]
);

Ожидаемый результат должен быть Грейс, но я не могу заставить его работать.

Ответы [ 2 ]

1 голос
/ 04 июня 2019

Вы не должны зацикливаться.Просто вычислите все суммы

$totals = array_map('array_sum', $students);

, затем выведите ключ массива с максимальной суммой.

echo array_keys($totals, max($totals))[0];
0 голосов
/ 04 июня 2019

Примерно так, возможно, при условии, что все оценки будут положительными

$students = array(
    'Mary' => [20,45,12],
    'Grace' => [40,78,56],
    'John' => [61,37,58]
);

$highest_grade = 0;
$higest_person = "";

foreach($students as $key => $value) {
    $max = max($value);
    if ($highest_grade <= $max) {
        $highest_grade = $max;
        $highest_person = $key;
    }
}
echo $highest_person . '->' . $highest_grade;

Выход использует http://phptester.net/

Grace->78
...