我正在使用 PHP 和 Microsoft SQL 2003。
我有这张桌子:
Page | Group
------------
1 | 1
2 | 2
3 | 1
4 | 2
我需要得到一个按“组”分组的数组:
Array(
1 => Array(1, 3),
2 => Array(2, 4)
);
我正在使用 PDO,我想直接从 SQL 获取数组,而不是使用 PHP 循环解析整个结果。
我能怎么做?
我正在使用 PHP 和 Microsoft SQL 2003。
我有这张桌子:
Page | Group
------------
1 | 1
2 | 2
3 | 1
4 | 2
我需要得到一个按“组”分组的数组:
Array(
1 => Array(1, 3),
2 => Array(2, 4)
);
我正在使用 PDO,我想直接从 SQL 获取数组,而不是使用 PHP 循环解析整个结果。
我能怎么做?
不能从 SQL 语句返回多维数组。您当然可以使用存储过程返回多个记录集,但返回多维数组是不可能的。
因此,我建议使用以下解决方案(未经测试):
$stmt = $pdo->prepare("SELECT Page,Group FROM SOME_TABLE");
$array = array();
if($stmt->execute()) {
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$array[$row['Group']][] = $row['Page'];
}
}
这会将页码分组到不同的组中,因此返回一个数组,如:
Array(
1 => Array(1, 3),
2 => Array(2, 4)
);