我从数据库中检索数据,这些数据包含多行"学期"、"时间表ID"、"课程ID"、"课程名称"、"教师名称"、"日期"、"开始时间"、"结束时间"、"地点"
。
当我获取到这些数据后,我想按"学期"
对它们进行分组。
例如,我从数据库中获取了以下数据:
Array
(
[0] => Array
(
[Semester] => Semester 1, 2015
[TimeTableID] => 11
[SubjectID] => CSCI2203
[SubjectName] => VISUAL PROGRAMMING
[FacultyName] => NAME 0
[Day] => Tue&Thu
[StartTime] => 10:15:00
[EndTime] => 12:00:00
[Location] => C4
)
[1] => Array
(
[Semester] => Semester 1, 2015
[TimeTableID] => 12
[SubjectID] => CSCI2903
[SubjectName] => FUNDAMENTALS OF NETWORKING
[FacultyName] => NAME 1
[Day] => Fri
[StartTime] => 10:15:00
[EndTime] => 12:00:00
[Location] => C13
)
[2] => Array
(
[Semester] => Semester 1, 2015
[TimeTableID] => 10
[SubjectID] => CSCI2003
[SubjectName] => DATA STRUCTURES
[FacultyName] => NAME 2
[Day] => Mon&Wed
[StartTime] => 10:15:00
[EndTime] => 12:00:00
[Location] => C6
)
[3] => Array
(
[Semester] => Semester 2, 2015
[TimeTableID] => 5
[SubjectID] => CSCI2903
[SubjectName] => FUNDAMENTALS OF NETWORKING
[FacultyName] => NAME 3
[Day] => Fri
[StartTime] => 08:00:00
[EndTime] => 09:45:00
[Location] => LH3
)
[4] => Array
(
[Semester] => Semester 2, 2015
[TimeTableID] => 3
[SubjectID] => CSCI3003
[SubjectName] => INTRODUCTION TO SOFTWARE ENGINEERING
[FacultyName] => NAME 1
[Day] => Mon&Wed
[StartTime] => 08:00:00
[EndTime] => 09:45:00
[Location] => C12
)
)
我希望按照"学期"
对它们进行分组,就像这样:
Array
(
[Semester 1, 2015] => Array
(
[0] => Semester 1, 2015
[1] => 11
[2] => CSCI2203
[3] => VISUAL PROGRAMMING
[4] => NAME 0
[5] => Tue&Thu
[6] => 10:15:00
[7] => 12:00:00
[8] => C4
[9] => Semester 1, 2015
[10] => 12
[11] => CSCI2903
[12] => FUNDAMENTALS OF NETWORKING
[13] => NAME 1
[14] => Fri
[15] => 10:15:00
[16] => 12:00:00
[17] => C13
[18] => Semester 1, 2015
[19] => 10
[20] => CSCI2003
[21] => DATA STRUCTURES
[22] => NAME 2
[23] => Mon&Wed
[24] => 10:15:00
[25] => 12:00:00
[26] => C6
)
[Semester 2, 2015] => Array
(
[0] => Semester 2, 2015
[1] => 5
[2] => CSCI2903
[3] => FUNDAMENTALS OF NETWORKING
[4] => NAME 3
[5] => Fri
[6] => 08:00:00
[7] => 09:45:00
[8] => LH3
[9] => Semester 2, 2015
[10] => 3
[11] => CSCI3003
[12] => INTRODUCTION TO SOFTWARE ENGINEERING
[13] => NAME 1
[14] => Mon&Wed
[15] => 08:00:00
[16] => 09:45:00
[17] => C12
)
)
到目前为止,这是我所拥有的:
$Semester = array();
$dataKey = array("Semester", "TimeTableID", "SubjectID", "SubjectName", "FacultyName", "Day", "StartTime", "EndTime", "Location");
for($i = 0; $i < count($Record); $i++)
{
if(!in_array($Record[$i]['Semester'], $Semester))
{
$Semester[$Record[$i]['Semester']] = $Record[$i]['Semester'];
}
for($j = 0; $j < count($dataKey); $j++)
{
$Semester[$Record[$i]['Semester']] = $Record[$i][$dataKey[$j]];
}
}
print_r($Semester);
$Record
是从数据库检索出的数据数组。但是这段代码只会给我最后一个值(即 location
):
Array
(
[Semester 1, 2015] => C6
[Semester 2, 2015] => C12
)
$Semester[$Record[$i]['Semester']][]
: - aldrin27array_values
来获取数组的所有值,而不是循环遍历$dataKey
数组。并且使用array_merge
来连接数组。 - Barmarforeach
来组织结果数组。 - aldrin27