按多列对多维数组数据进行分组并聚合值
问题陈述:
你有一个多维数组,它组合了来自两个单独数据库查询的数据。该数组由具有属性的记录组成,这些属性包括“部分”、“地址”、“类型”和“计数”。目标是根据“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中文网其他相关文章!