gpt4 book ai didi

php - 如何使用 PHP 数组对 MySQL 中的结果进行分组?

转载 作者:行者123 更新时间:2023-11-29 11:25:52 24 4
gpt4 key购买 nike

我的数据库中有 2 个表。

表A

StudentID      Name             Age
1 John Doe 15
1 John Doe 15
2 Marry Smith 20

表B

StudentID            Courses
1 Math
1 Science
2 Art

现在我使用 INNER JOIN 查询

$query = $db->prepare("Select a.studentid, a.name, a.age, b.studentid, b.courses FROM tableA a INNER JOIN TABLEB b ON a.studentid = b.studentid");
$query->execute();
$stmt = $query->fetchAll(PDO::FETCH_ASSOC);

$everything = array();
$groupArray = array();

foreach($stmt as $row){
$everything[] = $row;
}

foreach($everything as $e){
$groupArray[$e['studentid']][] = $e;
}

我得到的结果只是按照studentID分组

1 => array (size=2)
0 => array (size=5)
'StudentID' => string '1'
'Name' => string 'John Doe'
'Age' => string '15'
'StudentID' => string '1'
'Courses' => string 'Math'
1 => array (size=5)
'StudentID' => string '1'
'Name' => string 'John Doe'
'Age' => string '15'
'StudentID' => string '1'
'Courses' => string 'Science'

2 => array (size=2)
0 => array (size=5)
'StudentID' => string '2'
'Name' => string 'Marry Smith'
'Age' => string '20'
'StudentID' => string '2'
'Courses' => string 'Art'

我希望展示的是对它们进行分组,这样我就不会得到重复的学生。我怎样才能实现这个目标?提前致谢

1 => array (size=2)
0 => array (size=5)
'StudentID' => string '1'
'Name' => string 'John Doe'
'Age' => string '15'

'Courses' => array(
0 => String 'Math'
1 => String 'Science'
)

最佳答案

先检查数组键是否存在:

foreach($everything as $e){
if(!isset($groupArray[$e['studentid']])) {
$groupArray[$e['studentid']][] = $e;
}
}

但请注意,您只会获得其中一门类(class),例如数学,然后科学将被跳过,因为您的数组中已经有该学生的类(class)。

如果您想保留类(class)信息,同时不重复学生详细信息,那么您必须更深入:

foreach($everything as $e){
$id = $e['studentid'];
if (!isset($groupArray[$id]) {
... first time seeing this student
$groupArray[$id]['name'] = $e['name'];
$groupArray[$id]['age'] = $e['age']
$groupArray[$id]['classes'] = array();
}
$groupArray[$id]['classes'] = .. details about class here ...;
}

关于php - 如何使用 PHP 数组对 MySQL 中的结果进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38211684/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com