Intereting Posts
PHP: «Примечание: неопределенная переменная», «Примечание: неопределенный индекс» и «Примечание: неопределенное смещение» Зачем использовать $ _SERVER вместо "" PHP $ string {0} vs. $ string ; Ошибка MySQL – «У вас есть ошибка в синтаксисе SQL» Ошибка с PHP mail (): множественные или неверные строки, найденные в дополнительном_header Как присоединиться к трём столам по модели laravel eloquent PHP Mail () Ошибка возврата функции 500 Внутренний сервер Что такое синтаксис PHP для проверки «не null» или пустой строки? Конфигурация php.ini в MAC OSX Проверка подключения к Интернету с помощью командной строки PHP на Linux Как я могу извлечь или распаковать gzip-файл, используя php? PHP exec – проверьте, включено ли или отключено Окно обнаружения закрыто Как я могу переписать URL-адрес WordPress, чтобы использовать первый подкаталог в качестве строки запроса? В PHP, что это означает, что функция является бинарной безопасностью?

Групповые многомерные массивы на основе двух значений в PHP

У меня есть массив с этой структурой:

$grades = array( 'Grade 1' => array( 'title' => 'Grade 1 Class', 'students' => 5, 'teacher' => 'Smith', ), 'Grade 2' => array( 'title' => 'Grade 2 Class', 'students' => 5, 'teacher' => 'Smith', ), 'Grade 3' => array( 'title' =>'Grade 3 Class', 'students' => 8, 'teacher' => 'John', ), 'Grade 4' => array( 'title' =>'Grade 4 Class', 'students' => 8, 'teacher' => 'John', ), 'Grade 5' => array( 'title' =>'Grade 5 Class', 'students' => 8, 'teacher' => 'John', ), 'Grade 6' => array( 'title' =>'Grade 6 Class', 'students' => 8, 'teacher' => 'John', ), 'Grade 7' => array( 'title' =>'Grade 7 Class', 'students' => 9, 'teacher' => 'John', ), 'Grade 8' => array( 'title' =>'Grade 8 Class', 'students' => 4, 'teacher' => 'Tina', ), 'Grade 9' => array( 'title' =>'Grade 9 Class', 'students' => 4, 'teacher' => 'Tina', ) ); 

И я хочу сгруппировать их по количеству учеников и учителей.

Например, вышеупомянутый массив должен выводить это:

 Grade 1 Class - Grade 2 Class 5 Smith // group 1 Grade 3 Class - Grade 6 Class 8 John // group 2 Grade 7 Class 9 John // group 3 Grade 8 Class - Grade 9 Class 4 Tina // group 4 

поэтому, чтобы быть в 1 группе, они должны иметь как одинаковое количество учеников, так и одного учителя.

Следующие группы основаны на количестве студентов (в нем также есть некоторые ошибки):

 $newArray = array(); foreach ($grades as $key => $value) { $newArray[$value['students']][$key] = $value; } foreach ($newArray as $student => $data) { $gradeFirst = key($data); // Check there are multiple grade or single grade if(count($data) > 1){ $lastGrade = end($data); echo $data[$gradeFirst]['title'].' - '.$lastGrade['title'] .' '. $student; } else{ echo $data[$gradeFirst]['title'].' '. $student; } echo "\n"; } 

как я могу убедиться, что как ученик, так и преподаватель используются для группировки?

Примечание: порядок важен, поэтому, например, не будет группы для класса 1, класс 3, класс 4, если класс 2 отличается. В этом случае это будет:

 Grade 1 Class // group Grade 2 Class // breaks the group Grade 3 Class - Grade 4 Class // rest of the group 

Related of "Групповые многомерные массивы на основе двух значений в PHP"