Как преобразовать многомерный массив в таблицу MySQL

У меня есть следующий код, который создает расписание ревизий в виде многомерного массива. Каждый раздел представляет день и каждый час для пересмотра временного интервала. Я пытаюсь преобразовать этот многомерный массив в таблицу в mysql, чтобы расписание было удобным для пользователя и могло быть сохранено и так далее. Вот код, используемый для генерации расписаний, а также сгенерированного расписания.

<?php
if(!isset($_POST['subjects'])) {
header('Location: index.php');
}
define('DAY_LENGTH', 12);
$timetable = [];
foreach ($_POST as $subject => $n) {  // add in the required amount of subjects
$timetable = array_merge($timetable, array_fill(0, $n, $subject));
}
$timetable = array_merge($timetable, array_fill(0, DAY_LENGTH * 7 - count($timetable), ''));  // fill the array with empty values
shuffle($timetable);  // shuffle the set
$timetable = array_chunk($timetable, DAY_LENGTH);  // split it into 7 days

echo '<pre>';
var_dump($timetable);
echo '</pre>';

Это структура массива, она продолжается для 7 подмассивов, но я показал только первые 2, чтобы сэкономить время. Каждый вложенный массив представляет день недели, т. Е. [0] будет понедельником, а каждый массив в нем — это время дня, за которым следует субъект, т.е. [8] = 8 вечера и физика.

    array(7) {
[0]=>
array(12) {
[0]=>
string(0) ""[1]=>
string(9) "Computing"[2]=>
string(7) "Physics"[3]=>
string(7) "Physics"[4]=>
string(7) "Physics"[5]=>
string(5) "Maths"[6]=>
string(7) "Physics"[7]=>
string(7) "Physics"[8]=>
string(7) "Physics"[9]=>
string(7) "Physics"[10]=>
string(7) "Physics"[11]=>
string(7) "Physics"}
[1]=>
array(12) {
[0]=>
string(7) "Physics"[1]=>
string(9) "Computing"[2]=>
string(7) "Physics"[3]=>
string(7) "Physics"[4]=>
string(7) "Physics"[5]=>
string(7) "Physics"[6]=>
string(5) "Maths"[7]=>
string(7) "Physics"[8]=>
string(7) "Physics"[9]=>
string(7) "Physics"[10]=>
string(7) "Physics"[11]=>
string(5) "Maths"}

1

Решение

С двойным циклом вы можете получить доступ к параметрам, которые вы хотите.

Например:

foreach ($timetable as $day => $subTimetable) {
foreach ($subTimetable as $hour => $subject) {
$sql = "INSERT INTO `table` (`day`, `hour`, `subject`) VALUES (:day, :hour, :subject);";
$values = array(
'day' => $day,
'hour' => $hour,
'subject' => $subject
);
// Execute insert here
}
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector