我正在使用PHP和PDO从数据库检索一组值,然后使用以下代码按第一列进行分组:
$result = $sth->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_NUM);
这意味着如果我的数据采用以下格式:
|Column1 |Column2 |Column3| |1 |2 |a| |1 |2 |b|
它返回为:
1: { [Column2: 2, Column3: a], [Column2:2, Column3:b] }
我将如何按Column1和Column2分组,这样我会得到以下信息:
1: { 2: { Column3: a, Column3:b } }
可以结合使用PDO常数吗?
谢谢
如您所见,通过将数组与一个指定的列进行分组,可以轻松地轻松重建数组PDO::FETCH_GROUP。您需要将二维数组(数据库的结果)转换为三维数组,但是 无法 以这种方式重建它。
PDO::FETCH_GROUP
您需要通过嵌套循环手动进行操作。很简单,就像这些:
// let's assume $result is: $result = [ [1, 2, 'a'], [1, 2, 'b'] ]; $newResult = []; foreach( $result as $row ) { $newResult[$row[0]][$row[1]][] = $row[2]; } var_dump($newResult);
它返回:
array(1) { [1]=> array(1) { [2]=> array(2) { [0]=> string(1) "a" [1]=> string(1) "b" } } }
看起来就像您所需要的。