Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.08.2024, 19:31
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 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)
, а вот когда их несколько не получается. Помогите, пожалуйста.
Ответить с цитированием
  #2 (permalink)  
Старый 06.08.2024, 20:58
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,560

Ну вложи один в другой, какие проблемы?
foreach($values as $categoryKey => $categoryValues) {
  foreach($categoryValues as $key => $value) {
    ....
  }
}
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 06.08.2024, 21:13
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 07.07.2016
Сообщений: 281

Пробовала, что-то никак, может, что упустила. Попробую ещё.
Ответить с цитированием
  #4 (permalink)  
Старый 06.08.2024, 21:18
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 07.07.2016
Сообщений: 281

За ответ огромное спасибо!
Ответить с цитированием
  #5 (permalink)  
Старый 06.08.2024, 22:29
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,560

<?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.
Ответить с цитированием
  #6 (permalink)  
Старый 06.08.2024, 22:39
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 07.07.2016
Сообщений: 281

Огромное спасибо!
Ответить с цитированием
  #7 (permalink)  
Старый 07.08.2024, 01:13
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 07.07.2016
Сообщений: 281

Извините за наивность, но если этот массив у меня из array_values, как можно в данном случае использовать json_decode?

Последний раз редактировалось Sonya, 07.08.2024 в 08:03.
Ответить с цитированием
  #8 (permalink)  
Старый 07.08.2024, 02:49
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,560

Не знаю что за array_values. Так чтоли, лол?
$values = $array_values; // вместо json_decode

Или так?
$values = json_decode($array_values, true);


Если нет - показывай код.
__________________
29375, 35

Последний раз редактировалось Aetae, 07.08.2024 в 03:29.
Ответить с цитированием
  #9 (permalink)  
Старый 07.08.2024, 08:21
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 07.07.2016
Сообщений: 281

Доброе утро. Массив находится в файле, в котором переодически меняются только числа. Поэтому, я его открываю так: $array = file('data.txt'), и дальше $values = array_values($array);

Последний раз редактировалось Sonya, 07.08.2024 в 08:35.
Ответить с цитированием
  #10 (permalink)  
Старый 07.08.2024, 08:43
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 07.07.2016
Сообщений: 281

Сделала так:
$values = json_decode(file_get_contents('data.txt'), true);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в многомерном объекте/массиве tk.stas Общие вопросы Javascript 8 05.02.2019 21:21
Быстрый поиск интервалов в массиве HJ90 Общие вопросы Javascript 19 16.08.2017 23:49
Поиск объектов в массиве Lynatik Общие вопросы Javascript 24 22.06.2013 12:43
Поиск в массиве, частичное совпадение фонарик Общие вопросы Javascript 25 04.04.2013 07:43
Поиск в массиве через JavaScript Noran Общие вопросы Javascript 0 10.08.2008 17:31