首页 > 后端开发 > php教程 > 如何按多个列值对多维数组进行分组并对另一列的值求和?

如何按多个列值对多维数组进行分组并对另一列的值求和?

Patricia Arquette
发布: 2024-11-05 22:49:02
原创
1073 人浏览过

How can I group a multidimensional array by multiple column values and sum another column's values?

按多列值对多维数组数据进行分组并对列值求和

问题:

此问题涉及一个数组来自跨不同数据库的多个数据库查询的数据。目标是根据两列值(“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>
登录后复制

解决方案:

对数组元素进行分组并对“count”值求和,可以使用以下函数:

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

  foreach($input as $value) {
    $output_element = &amp;$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>
登录后复制

此函数迭代输入数组,识别每个元素的“part”和“type”值。然后,它使用这些值作为键来创建或检索输出元素。对于每个键,该函数会初始化一个“count”字段(如果该字段不存在),并使用该元素的“count”字段的值递增该字段。最后,它返回一个包含分组元素的数组。

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

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