php – 我可以使用PDO :: FETCH_GROUP按两个值对结果进行分组

前端之家收集整理的这篇文章主要介绍了php – 我可以使用PDO :: FETCH_GROUP按两个值对结果进行分组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用 PHP和PDO从数据库中检索一组值,然后按第一列分组,使用以下代码
  1. $result = $sth->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_NUM);

这意味着如果我的数据采用以下格式:

  1. |Column1 |Column2 |Column3|
  2. |1 |2 |a|
  3. |1 |2 |b|

它返回为:

  1. 1: {
  2. [Column2: 2,Column3: a],[Column2:2,Column3:b]
  3. }

我如何按Column1和Column2进行分组,以便得到如下内容

  1. 1:
  2. {
  3. 2:
  4. {
  5. Column3: a,Column3:b
  6. }
  7. }

这可能与PDO常量的组合有关吗?

谢谢

如您所见,通过使用PDO :: FETCH_GROUP将其与一个指定列分组,可以轻松地轻松地重建阵列.你需要的是将二维数组(数据库的结果)转换为三维数组,但不可能以这种方式重建它.

您需要通过嵌套循环手动执行此操作.这很简单,像这样:

  1. // let's assume $result is:
  2. $result = [
  3. [1,2,'a'],[1,'b']
  4. ];
  5.  
  6. $newResult = [];
  7. foreach( $result as $row ) {
  8. $newResult[$row[0]][$row[1]][] = $row[2];
  9. }
  10.  
  11. var_dump($newResult);

它返回:

  1. array(1) {
  2. [1]=>
  3. array(1) {
  4. [2]=>
  5. array(2) {
  6. [0]=>
  7. string(1) "a"
  8. [1]=>
  9. string(1) "b"
  10. }
  11. }
  12. }

它看起来像你需要的东西.

猜你在找的PHP相关文章