В результате выборки из базы данных получаю следующий массив:
Исходный массив (Отобразить)
CODE ( htmlphp):
скопировать код в буфер обмена
array(5) { [0]=> array(6) { ["weekday"]=> string(6) "Monday" ["order"]=> string(1) "1" ["subject"]=> string(29) "Limba și Literatura Romвnă" ["teacher"]=> string(14) "Pozneac Silvia" ["classroom"]=> string(2) "46" ["homework"]=> string(33) "Домашнее задание 1" } [1]=> array(6) { ["weekday"]=> string(6) "Monday" ["order"]=> string(1) "2" ["subject"]=> string(9) "Geografia" ["teacher"]=> string(16) "Parancenco Oxana" ["classroom"]=> string(2) "46" ["homework"]=> string(33) "Домашнее задание 2" } [2]=> array(6) { ["weekday"]=> string(6) "Monday" ["order"]=> string(1) "2" ["subject"]=> string(11) "Informatica" ["teacher"]=> string(13) "Afanas Galina" ["classroom"]=> string(2) "21" ["homework"]=> string(33) "Домашнее задание 3" } [3]=> array(6) { ["weekday"]=> string(6) "Monday" ["order"]=> string(1) "3" ["subject"]=> string(26) "Limba și Literatura Rusă" ["teacher"]=> string(15) "Zolotuhin Lidia" ["classroom"]=> string(2) "46" ["homework"]=> string(33) "Домашнее задание 4" } [4]=> array(6) { ["weekday"]=> string(6) "Monday" ["order"]=> string(1) "4" ["subject"]=> string(10) "Matematica" ["teacher"]=> string(16) "Tudorean Tatiana" ["classroom"]=> string(2) "46" ["homework"]=> string(33) "Домашнее задание 5" } }
Из него, впоследствии, нужно получить массив такого содержания:
Конечный массив (Отобразить)
CODE ( htmlphp):
скопировать код в буфер обмена
array(1) { ["Monday"]=> array(4) { [1]=> array(1) { [0]=> array(4) { ["subject"]=> string(29) "Limba și Literatura Romвnă" ["teacher"]=> string(14) "Pozneac Silvia" ["classroom"]=> string(2) "46" ["homework"]=> string(33) "Домашнее задание 1" } } [2]=> array(2) { [0]=> array(4) { ["subject"]=> string(9) "Geografia" ["teacher"]=> string(16) "Parancenco Oxana" ["classroom"]=> string(2) "46" ["homework"]=> string(33) "Домашнее задание 2" } [1]=> array(4) { ["subject"]=> string(11) "Informatica" ["teacher"]=> string(13) "Afanas Galina" ["classroom"]=> string(2) "21" ["homework"]=> string(33) "Домашнее задание 3" } } [3]=> array(1) { [0]=> array(4) { ["subject"]=> string(26) "Limba și Literatura Rusă" ["teacher"]=> string(15) "Zolotuhin Lidia" ["classroom"]=> string(2) "46" ["homework"]=> string(33) "Домашнее задание 4" } } [4]=> array(1) { [0]=> array(4) { ["subject"]=> string(10) "Matematica" ["teacher"]=> string(16) "Tudorean Tatiana" ["classroom"]=> string(2) "46" ["homework"]=> string(33) "Домашнее задание 5" } } } }
Преобразование в следующем:
Из
CODE ( htmlphp):
скопировать код в буфер обмена
[0]=> ["weekday"]=> string(6) "День недели" ["order"]=> string(1) "Порядок пары" ["subject"]=> string(29) "Название предмета" ["teacher"]=> string(14) "Преподаватель" ["classroom"]=> string(2) "Номер кабинета" ["homework"]=> string(33) "Домашнее задание" }
В
CODE ( htmlphp):
скопировать код в буфер обмена
["День недели"]=> ["Порядок пары"]=> [0]=> ["subject"]=> string(29) "Название предмета" ["teacher"]=> string(14) "Преподаватель" ["classroom"]=> string(2) "Номер кабинета" ["homework"]=> string(33) "Домашнее задание" } } } }
В настоящий момент преобразование происходит так:
PHP:
скопировать код в буфер обмена
$sql = "SELECT DAYNAME(`schedule`.`date`) AS `weekday`, `schedule`.`order`, `subject`.`subject`, `subject`.`teacher`, `subject`.`classroom`, `homework`.`homework` FROM `schedule`, `subject`, `homework`, `schedule_subject_homework` WHERE WEEK(`schedule`.`date`, 1) = WEEK(CURDATE(), 1) AND `schedule`.`schedule_id` = `schedule_subject_homework`.`schedule_id` AND `subject`.`subject_id` = `schedule_subject_homework`.`subject_id` AND `homework`.`homework_id` = `schedule_subject_homework`.`homework_id` ORDER BY `schedule`.`order` ASC"; // Выборка $schedule = $mysqli->query($sql)->fetch_all(MYSQLI_ASSOC); foreach ($schedule as $key => $class) { $schedule[$class['weekday']][$class['order']][] = [ 'subject' => $class['subject'], 'teacher' => $class['teacher'], 'classroom' => $class['classroom'], 'homework' => $class['homework']]; // Убираем из массива числовые ключи нулевого уровня } }
Вопрос: мне кажется, это можно сделать намного легче. Возможно, даже с помощью SQL. Как упростить? Картинку с графическим представлением структуры БД прикрепляю Прикреплено изображение (Нажмите для увеличения)
(Отредактировано автором: 17 Октября, 2014 - 15:26:50)
|