Поиск в многомерном массиве
Здравствуйте! Подскажите пожалуйтса, как можно реализовать поиск наибольшего или наименьшего числа (в зависимости от "category") "quantity" в каждом блоке массива
{ "category": { "A": [ { "teacher": 27, "quantity": 32 }, { "teacher": 31, "quantity": 39 }, { "teacher": 41, "quantity": 22 }, { "teacher": 73, "quantity": 15 } ], "B": [ { "teacher": 28, "quantity": 33 }, { "teacher": 46, "quantity": 23 }, { "teacher": 34, "quantity": 22 }, { "teacher": 131, "quantity": 319 } ], "C": [ { "teacher": 72, "quantity": 139 }, { "teacher": 88, "quantity": 12 }, { "teacher": 83, "quantity": 56 }, { "teacher": 55, "quantity": 23 } ], "D": [ { "teacher": 11, "quantity": 78 }, { "teacher": 34, "quantity": 25 }, { "teacher": 21, "quantity": 35 }, { "teacher": 34, "quantity": 26 } ], "E": [ { "teacher": 30, "quantity": 10 }, { "teacher": 23, "quantity": 99 }, { "teacher": 67, "quantity": 87 }, { "teacher": 10, "quantity": 53 } ] } }в категории "А" наибольшее число такое-то, в "B" наименьшее число такое-то, в категории "С" - наибольшее, в "D" - наименьшее, в "E" - наибольшее. Для массива с одним блоком, я использую foreach($values as $key => $value), а вот когда их несколько не получается. Помогите, пожалуйста. |
Ну вложи один в другой, какие проблемы?
foreach($values as $categoryKey => $categoryValues) { foreach($categoryValues as $key => $value) { .... } } |
Пробовала, что-то никак, может, что упустила. Попробую ещё.
|
За ответ огромное спасибо!
|
<?php $values = json_decode('{ "category": { "A": [ { "teacher": 27, "quantity": 32 }, { "teacher": 31, "quantity": 39 }, { "teacher": 41, "quantity": 22 }, { "teacher": 73, "quantity": 15 } ], "B": [ { "teacher": 28, "quantity": 33 }, { "teacher": 46, "quantity": 23 }, { "teacher": 34, "quantity": 22 }, { "teacher": 131, "quantity": 319 } ], "C": [ { "teacher": 72, "quantity": 139 }, { "teacher": 88, "quantity": 12 }, { "teacher": 83, "quantity": 56 }, { "teacher": 55, "quantity": 23 } ], "D": [ { "teacher": 11, "quantity": 78 }, { "teacher": 34, "quantity": 25 }, { "teacher": 21, "quantity": 35 }, { "teacher": 34, "quantity": 26 } ], "E": [ { "teacher": 30, "quantity": 10 }, { "teacher": 23, "quantity": 99 }, { "teacher": 67, "quantity": 87 }, { "teacher": 10, "quantity": 53 } ] } }', true); $maxQuantity = []; foreach($values['category'] as $categoryKey => $categoryValues) { $max = 0; foreach($categoryValues as $key => $value) { if($value['quantity'] > $max) { $max = $value['quantity']; $maxQuantity[$categoryKey] = $value; } } } echo "В катеогории А победил " . $maxQuantity['A']['teacher'] . " со счётом " . $maxQuantity['A']['quantity'] . ".\n"; var_dump($maxQuantity); |
Огромное спасибо!
|
Извините за наивность, но если этот массив у меня из array_values, как можно в данном случае использовать json_decode?
|
Не знаю что за array_values. Так чтоли, лол?
$values = $array_values; // вместо json_decode Или так? $values = json_decode($array_values, true); Если нет - показывай код. |
Доброе утро. Массив находится в файле, в котором переодически меняются только числа. Поэтому, я его открываю так: $array = file('data.txt'), и дальше $values = array_values($array);
|
Сделала так:
$values = json_decode(file_get_contents('data.txt'), true); |
Часовой пояс GMT +3, время: 10:46. |