PHP中的组数组项

时间:2018-10-16 09:12:38

标签: 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岁。

所以我有五个学生的上述阵列。从这个数组中,我将分为3个组,每个组将是上面的组(2个组,其中2个学生符合条件,1个组,其中1个学生)。

你能帮我吗?

谢谢

1 个答案:

答案 0 :(得分:0)

为什么在查询中不使用双分组方式?

Group by Age , Disability

这实际上会将您的结果按需要分组为两个组,因此您将保存php排序以及多个iffor