我正在发出sql请求,以从数据库中获取所有老师的学生 我的问题是,当我获取这些数据时,会显示名称 每个学生的老师, 我希望显示的内容如下:
示教1 学生1 学生2 学生3
但我却得到:
示教1 学生1教1 学生2教1 学生3教1
请帮助您解决此问题, 这是我的SQL请求:
SELECT a.name, b.nameTeacher
FROM table1 b JOIN
table2 a
ON a.id_teacher = b.id ;
这就是我使用for循环循环数据
foreach($this->TeacherStudents as $key => $value){
echo $value['nameTeacher'];
echo '<a href="'.$url.'"> '.$value['name'].'</a> <span class="badge">';
}
答案 0 :(得分:1)
您可以更改sql查询,以便它按顺序返回教师:
SELECT a.name, b.nameTeacher
FROM table1 b JOIN
table2 a
ON a.id_teacher = b.id order by b.id;
然后更改for循环,以使其仅打印一次教师姓名:
$lastTeacher = null;
foreach($this->TeacherStudents as $key => $value){
if($lastTeacher != $value['nameTeacher']) {
echo $value['nameTeacher'];
echo '<br>';
$lastTeacher = $value['nameTeacher'];
}
echo ' <a href="'.$url.'"> '.$value['name'].'</a><br>';
}
您忽略了如何构建$url
,因此我也省略了。
答案 1 :(得分:1)
如果您的ORDER BY
语句中没有SQL
子句,另一种可能的方法是用键定义第二个数组-老师的名字和项目-每个老师的学生名字。
<?php
...
$output = array();
foreach($this->TeacherStudents as $key => $value){
$teacher = $value['nameTeacher'];
if (!array_key_exists($teacher, $output)) {
$output[$teacher] = array();
}
$output[$teacher][] = $value['name'];
}
foreach($output as $teacher => $students) {
echo $teacher;
foreach ($students as $key => $value) {
echo '<a href="'.$url.'"> '.$value.'</a> <span class="badge">';
}
}
...
?>
答案 2 :(得分:0)
您必须检查以下代码并获得结果。
$teacherWiseStdList = [];
foreach($this->TeacherStudents as $key => $value){
$teacherWiseStdList[$value['nameTeacher']] = $value['name'];
}
现在,您必须按照以下方式打印结果。
foreach(teacherWiseStdList as $teacherName => $studentName) {
if (array_key_exists($teacherName, $teacherWiseStdList)) {
echo $teacherName;
} else {
echo '<a href="yourUrl"> '.$studentName.'</a> <span class="badge">';
}
}