如何增量添加到多维数组PHP?

问题描述

我正在从数据库中拉出许多这样的行

$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;
  }
}