首页  >  文章  >  后端开发  >  如何在 PHP 中按多列和聚合值对多维数组数据进行分组?

如何在 PHP 中按多列和聚合值对多维数组数据进行分组?

Susan Sarandon
Susan Sarandon原创
2024-11-07 03:53:02259浏览

How do I Group Multidimensional Array Data by Multiple Columns and Aggregate Values in PHP?

按多列对多维数组数据进行分组并聚合值

问题陈述:

你有一个多维数组,它组合了来自两个单独数据库查询的数据。该数组由具有属性的记录组成,这些属性包括“部分”、“地址”、“类型”和“计数”。目标是根据“part”和“type”值对数组元素进行分组,并计算每组内“count”值的总和。

示例输入:

<code class="php">$arr1 = [
    ['part' => '1', 'address' => 'aaa', 'type' => '1', 'count' => 5],
    ['part' => '1', 'address' => 'bbb', 'type' => '1', 'count' => 5],
    ['part' => '1', 'address' => 'ccc', 'type' => '1', 'count' => 5],
    ['part' => '2', 'address' => 'aaa', 'type' => '1', 'count' => 5],
    ['part' => '2', 'address' => 'bbb', 'type' => '1', 'count' => 5],
    ['part' => '2', 'address' => 'ccc', 'type' => '2', 'count' => 5]
];</code>

预期输出:

<code class="php">$arr2 = [
    ['part' => '1', 'type' => '1', 'count' => 15],
    ['part' => '2', 'type' => '1', 'count' => 10],
    ['part' => '2', 'type' => '2', 'count' => 5]
];</code>

解决方案:

为了实现所需的分组和聚合,我们可以利用PHP 的数组操作函数。考虑以下函数:

<code class="php">function groupByPartAndType($input) {
  $output = Array();

  foreach($input as $value) {
    $output_element = & $output[$value['part'] . "_" . $value['type']];
    $output_element['part'] = $value['part'];
    $output_element['type'] = $value['type'];
    !isset($output_element['count']) && $output_element['count'] = 0;
    $output_element['count'] += $value['count'];
  }

  return array_values($output);
}</code>

通过将此函数应用于输入数组 $arr1,我们获得所需的输出 $arr2。输出数组中的每个元素代表一组共享相同“部分”和“类型”值的数据点,以及相应“计数”值的总和。

替代方法:

如果两个数据库查询源自同一数据库服务器,您可以使用 SQL 的 GROUP BY 功能在数据库本身内执行分组和聚合,从而无需在 PHP 中进行后处理。

以上是如何在 PHP 中按多列和聚合值对多维数组数据进行分组?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn