问题描述
我正在从数据库中拉出许多这样的行
$rows = [
['id' => 3,'course_name' => 'GSG2','course_day' => 'Monday','course_starts_at' => '01:30:00'],['id' => 2,'course_name' => 'Look1','course_day' => 'Wednesday','course_starts_at' => '03:10:00']
]
我需要从中制作一个多维数组,该数组将把工作日作为键,将行数组作为值。因为即使天很空,我也需要钥匙才能出现,所以我首先这样做了
$tiMetable = [
['Monday' => ''],['Tuesday' => ''],['Wednesday' => ''],['Thursday' => ''],['Friday' => ''],];
然后我要这样做
foreach ($rows as $row) {
switch ($row['course_day']) {
case "Monday":
$tiMetable['Monday'] = $row;
break;
case "Tuesday":
$tiMetable['Tuesday'] = $row;
break;
case "Wednesday":
$tiMetable['Wednesday'] = $row;
break;
case "Thursday":
$tiMetable['Thursday'] = $row;
break;
case "Friday":
$tiMetable['Friday'] = $row;
break;
}
}
但是随后生成的多维多维数组每天只有一个过程(最后一次迭代)。我尝试使用+ =代替=,但是没有用。请问您有什么建议吗?
解决方法
对您的最简单的修改如下:
$timetable = [
'Monday' => [],'Tuesday' => [],'Wednesday' => [],'Thursday' => [],'Friday' => []
];
foreach ($rows as $row) {
$courseDay = $row['course_day'];
if (isset($timetable[$courseDay])) {
$timetable[$courseDay][] = $row;
}
}
首先以时间表为时间表创建时间表,然后在星期几匹配的情况下添加事件。还可以通过从时间表变量中添加或删除支持天数来限制支持的天数。
,尝试用这种方式
foreach ($rows as $row) {
switch ($row['course_day']) {
case "Monday":
$timetable['Monday'][] = $row;
break;
case "Tuesday":
$timetable['Tuesday'][] = $row;
break;
case "Wednesday":
$timetable['Wednesday'][] = $row;
break;
case "Thursday":
$timetable['Thursday'][] = $row;
break;
case "Friday":
$timetable['Friday'][] = $row;
break;
}
}