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

标签 php mysql sql arrays pdo

我正在使用 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 将数组与一个指定的列分组来轻松重建数组。您需要的是将 2 维数组(来自数据库的结果)转换为 3 维数组,但不可能以这种方式重建它。

您需要通过嵌套循环手动完成。这很简单,像这样:

// 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"
    }
  }
}

它看起来正是您所需要的。

关于php - 我可以使用 PDO::FETCH_GROUP 按两个值对结果进行分组吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23265998/

相关文章:

sql - 在MS Access中导出UTF-8编码的文本文件

php - 计算嵌套数组树中的叶子数

php - 在 PHP 的第二个查询中使用一个 mysqli 查询中的值

php - 动态获取列中每个唯一值的计数

php - PDO:多次使用相同的绑定(bind)变量

mysql - 在 MySQL 中索引和查询分析表的最佳方式

sql - 在 T-SQL 中运行 SUM

php - 如何获取文件的前 3 行,然后获取其他所有内容

javascript - 如何根据浏览器选项卡设置cookie

php mysql 4个表连接