当前位置: 首页 > 面试题库 >

我可以使用PDO :: FETCH_GROUP将结果按两个值分组

鞠侯林
2023-03-14
问题内容

我正在使用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, 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"
    }
  }
}

看起来就像您所需要的。



 类似资料:
  • 尝试实现此JSON响应: 欣赏任何想法/语法,谢谢!

  • 问题内容: 我有下表。 我正在使用ID获取分组结果 现在,我想将project_id,category_id,supplier_id插入主表,并将item_id,qty,rate插入其明细表。明细表会将主表ID作为外键。请帮忙。 问题答案: 假设这个模式: 可以做到这一点:

  • 问题内容: 我正在使用Angular-Filter的groupBy过滤器。 来自GitHub的示例 : 因此,该示例按 team 对玩家集合进行 分组 。想象一下,每个玩家对象都有一个 年龄 属性: 我想GROUP BY 团队 和 年龄 。我怎样才能做到这一点? 问题答案: 遵循多个字段的示例

  • 先决条件:Java7和SQLServer 2016。 我从SQL Server获取存储过程返回的结果集 结果集: 我创建了一个POJO类来保存结果集。我想创建一个Hashmap对象,其中Key为,,,Value为List,其中包含给定Key的所有值。 那么,我可以使用HashMap做到这一点吗?我想我可以使用包含其他地图作为价值的地图。但不确定如何使公共键值项作为列表。 Java类: HoursQ

  • 问题内容: 我正在尝试使用PDO从表中检索数据,只是我似乎无法向浏览器输出任何内容,只是得到了一个纯白页。 问题答案: 例。 这是您的dbc类 您的PHP页面:

  • 问题内容: 我有一个由Java 8流表示的数据集: 我可以看到如何对其进行过滤以获取随机子集-例如 我还可以看到如何减少该流,例如得到两个表示数据集的两个随机一半的列表,然后将它们转换回流。但是,是否有直接方法可以从最初的一个生成两个流?就像是 感谢您的任何见解。 问题答案: 不完全是。您不可能一分之二。这没有道理-您将如何遍历一个而不需要同时生成另一个?流只能操作一次。 但是,如果要将它们转储到