php - PHP中的组数组项
问题描述
我有上面的数组:
| Student First Name |Student Last Name | Age |Disability|
| Student_First_Name_1 |Student_Last_Name_1 | 30 | 1 |
| Student_First_Name_2 |Student_Last_Name_2 | 28 | 0 |
| Student_First_Name_3 |Student_Last_Name_3 | 21 | 0 |
| Student_First_Name_4 |Student_Last_Name_4 | 20 | 1 |
| Student_First_Name_5 |Student_Last_Name_5 | 22 | 0 |
我想按年龄和残疾对学生进行分组。因此,如果我的代码运行正确,我将得到上述结果:
Student_First_Name_1:Student_First_Name_4
Student_First_Name_3:Student_First_Name_5
Student_First_Name_2
但相反,我有上述内容:
Student_First_Name_1:Student_First_Name_4
Student_First_Name_3:Student_First_Name_5
Student_First_Name_2:Student_Last_Name_3
Student_First_Name_2:Student_Last_Name_5
我的代码是:
$StudentsForSID = $conn->prepare("SELECT * FROM members WHERE sid = :sid AND level = :level");
$StudentsForSID->execute([ 'sid' => $SelectedSID, 'level' => 'LRN_B1' ]);
while($row = $StudentsForSID->fetch(PDO::FETCH_ASSOC)){
$TempSelected[] = $row;
}
$count=count($TempSelected);
for($i=0; $i<$count-1; $i++){
for ($j = $i+1; $j < $count; $j++) {
if($TempSelected[$i]['disability']==$TempSelected[$j]['disability']){
if( abs($TempSelected[$i]['age']-$TempSelected[$j]['age']) <= 23 ){
$Student1 = $TempSelected[$j]['first_name'];
$Student2 = $TempSelected[$i]['first_name'];
print_r($Student1.'-'.$Student2.'<br/>');
}
}
}
}
我不认为我解释得很好。所以我编辑了这个问题。我想要什么:我想让 2 名学生的小组在残疾方面具有相同的价值,并且 2 名学生之间的年龄差等于或小于 23 岁。
所以我有 5 个学生的上述数组。从这个数组中,我将制作 3 个组,这些组将是上述的(2 组有 2 名学生符合标准,1 组有 1 名学生)。
你能帮助我吗?
谢谢
解决方案
为什么不在查询中使用双重分组依据?
Group by Age , Disability
这实际上会将您的结果分为您想要的两组,因此您将保存 php 排序和那些多重if
和for
。
推荐阅读
- mongodb - 如何在mongodb的字段中插入元数据
- sql-server - 寻找动态存储过程,用于多个查询
- google-apps-script - Google Chat API:从机器人中删除消息会出现 401 错误
- python - 使用 Select Widget 问题更新绘图
- oauth-2.0 - BotFramework 通过 OAuth 2.0 与 PingFederate 集成?
- ruby - 如何让 CocoaPods 使用最新的 ruby 版本?
- python - 我对带有 Python Selenium 的 Instagram 之类的机器人有疑问
- android - 如何显示在android中播放的音乐的歌词
- scala - Long 在 scalafiddle 上只允许 10^9
- swift - NSNotification 观察者不会被删除,除非它被触发一次