我使用
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将其与一个指定列分组,可以轻松地轻松地重建阵列.你需要的是将二维数组(数据库的结果)转换为三维数组,但不可能以这种方式重建它.
您需要通过嵌套循环手动执行此操作.这很简单,像这样:
- // let's assume $result is:
- $result = [
- [1,2,'a'],[1,'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"
- }
- }
- }
它看起来像你需要的东西.