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

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

Susan Sarandon
发布: 2024-11-07 03:53:02
原创
349 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板