请问这段PHP数组该如何统计重复值和计算金额?

作者站长头像
站长
· 阅读数 17
Array
(
    [0] => Array
        (
            [price] => 100
            [org_name] => '部门1'
        )

    [1] => Array
        (
            [price] => 100
            [org_name] => '部门2'
        )

    [2] => Array
        (
            [price] => 200
            [org_name] => '部门2'
        )
    [3] => Array
        (
            [price] => 500
            [org_name] => '部门1'
        )
)

最后想实现的是能统计到部门重复数量还有这个部门产生的金额是多少~ 求各位大佬帮帮忙~

Array
(
    [部门1] => Array
        (
            [count] => 2
            [price] => 600
        )

    [部门2] => Array
        (
            [count] => 2
            [price] => 300
        )
)

万分感谢~

回复
1个回答
avatar
test
2024-07-14

你可以使用 PHP 的 array_count_values() 函数来统计数组中重复值的数量。例如,假设你的数组是 $array,那么你可以使用下面的代码来统计重复值的数量:

$counts = array_count_values(array_column($array, 'org_name'));

这段代码会将数组中每个元素的 'org_name' 属性作为新数组的值,然后用 array_count_values() 函数统计每个值的数量。例如,对于上面的数组,$counts 数组的值会是:

Array
(
    ['部门1'] => 2
    ['部门2'] => 2
)

然后,你可以遍历 $array 数组,并累加每个部门的总金额。例如,你可以使用下面的代码来统计每个部门的总金额:

$prices = array();
foreach ($array as $item) {
    if (isset($prices[$item['org_name']])) {
        $prices[$item['org_name']] += $item['price'];
    } else {
        $prices[$item['org_name']] = $item['price'];
    }
}

这段代码会遍历 $array 数组,并根据每个元素的 'org_name' 属性来统计每个部门的总金额。例如,对于上面的数组,$prices 数组的值会是:

Array
(
    ['部门1'] => 600
    ['部门2'] => 300
)

最后,你可以将 $counts 和 $prices 数组合并为一个数组,这个数组就是你想要的结果。例如,你可以使用下面的代码来合并这两个数组:

$results = array();
foreach ($counts as $org_name => $count) {
    $results[$org_name] = array(
        'count' => $count,
        'price' => $prices[$org_name]
    );
}

这段代码会遍历 $counts 数组,并根据 $counts 数组中的值来创建新的数组。例如,对于上面的数组,$results 数组的值会是:

Array
(
    ['部门1'] => Array
        (
            ['count'] => 2
            ['price'] => 600
        )

    ['部门2'] => Array
        (
            ['count'] => 2
            ['price'] => 300
        )
)

总之,要实现你想要的统计结果,你可以使用 array_count_values() 函数来统计重复值的数量,然后遍历原数组来累加每个部门的总金额,最后将这两个结果合并为一个数组。希望这些信息对你有所帮助。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容