06.08.2024, 19:31
|
Профессор
|
|
Регистрация: 07.07.2016
Сообщений: 281
|
|
Поиск в многомерном массиве
Здравствуйте! Подскажите пожалуйтса, как можно реализовать поиск наибольшего или наименьшего числа (в зависимости от "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)
, а вот когда их несколько не получается. Помогите, пожалуйста.
|
|
06.08.2024, 20:58
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,577
|
|
Ну вложи один в другой, какие проблемы?
foreach($values as $categoryKey => $categoryValues) {
foreach($categoryValues as $key => $value) {
....
}
}
__________________
29375, 35
|
|
06.08.2024, 21:13
|
Профессор
|
|
Регистрация: 07.07.2016
Сообщений: 281
|
|
Пробовала, что-то никак, может, что упустила. Попробую ещё.
|
|
06.08.2024, 21:18
|
Профессор
|
|
Регистрация: 07.07.2016
Сообщений: 281
|
|
За ответ огромное спасибо!
|
|
06.08.2024, 22:29
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,577
|
|
<?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);
__________________
29375, 35
Последний раз редактировалось Aetae, 06.08.2024 в 22:32.
|
|
06.08.2024, 22:39
|
Профессор
|
|
Регистрация: 07.07.2016
Сообщений: 281
|
|
Огромное спасибо!
|
|
07.08.2024, 01:13
|
Профессор
|
|
Регистрация: 07.07.2016
Сообщений: 281
|
|
Извините за наивность, но если этот массив у меня из array_values, как можно в данном случае использовать json_decode?
Последний раз редактировалось Sonya, 07.08.2024 в 08:03.
|
|
07.08.2024, 02:49
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,577
|
|
Не знаю что за array_values. Так чтоли, лол?
$values = $array_values; // вместо json_decode
Или так?
$values = json_decode($array_values, true);
Если нет - показывай код.
__________________
29375, 35
Последний раз редактировалось Aetae, 07.08.2024 в 03:29.
|
|
07.08.2024, 08:21
|
Профессор
|
|
Регистрация: 07.07.2016
Сообщений: 281
|
|
Доброе утро. Массив находится в файле, в котором переодически меняются только числа. Поэтому, я его открываю так: $array = file('data.txt'), и дальше $values = array_values($array);
Последний раз редактировалось Sonya, 07.08.2024 в 08:35.
|
|
07.08.2024, 08:43
|
Профессор
|
|
Регистрация: 07.07.2016
Сообщений: 281
|
|
Сделала так:
$values = json_decode(file_get_contents('data.txt'), true);
|
|
|
|