PHP数组处理,二维数组,去重以及值相加。想了半天没有想到,求帮助?

发布于 2022-09-05 10:00:41 字数 1056 浏览 10 评论 0

<?php
$array = Array
(

[0] => Array
    (
        [source_browser] => 1
        [num] => 1
    )

[1] => Array
    (
        [source_browser] => 2
        [num] => 2
    )

[2] => Array
    (
        [source_browser] => 3
        [num] => 3
    )

[3] => Array
    (
        [source_browser] => 2
        [num] => 4
    )

[4] => Array
    (
        [source_browser] => 4
        [num] => 5
    )

[5] => Array
    (
        [source_browser] => 1
        [num] => 6
    )

);
怎么把数组处理为:Array
(

[0] => Array
    (
        [source_browser] => 1
        [num] => 7
    )

[1] => Array
    (
        [source_browser] => 2
        [num] => 6
    )

[2] => Array
    (
        [source_browser] => 3
        [num] => 3
    )

[3] => Array
    (
        [source_browser] => 4
        [num] => 5
    )

)
也就是当source_browser的值相等的时候,把他们的num值相加然后,相等的只保留一个键值对source_browser num为相加后的
?>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

锦爱 2022-09-12 10:00:41
<?php

    $array = [
        ['source_browser' => 1, 'num' => 1],
        ['source_browser' => 3, 'num' => 3],
        ['source_browser' => 2, 'num' => 3],
        ['source_browser' => 2, 'num' => 3],
        ['source_browser' => 1, 'num' => 3]
    ];
    
    $tmp = [];

    foreach ($array as $v)
    {
        $index = $v['source_browser'] - 1;

        // init 
        if (!isset($tmp[$index]))
        {
            $tmp[$index]['num'] = 0;
            $tmp[$index]['source_browser'] = $v['source_browser'];
        }
        
        $tmp[$index]['num'] += $v['num'];
    }

    var_dump($tmp);

---------- Debug PHP ----------

array(3) {
  [0]=>
  array(2) {
    ["num"]=>
    int(4)
    ["source_browser"]=>
    int(1)
  }
  [2]=>
  array(2) {
    ["num"]=>
    int(3)
    ["source_browser"]=>
    int(3)
  }
  [1]=>
  array(2) {
    ["num"]=>
    int(6)
    ["source_browser"]=>
    int(2)
  }
}

输出完成 (耗时 0 秒) - 正常终止

排序有点问题,如果你想按你的那样排序,自己写一个循环也是很简单的。我就不多写了。

暮凉 2022-09-12 10:00:41

` $array = [

        ['source_browser' => 1, 'num' => 1],
        ['source_browser' => 3, 'num' => 3],
        ['source_browser' => 2, 'num' => 3],
        ['source_browser' => 2, 'num' => 3],
        ['source_browser' => 1, 'num' => 3]
    ];

    $tmp = [];
        
    foreach ($array as $key => $value){
        if(!isset($tmp[$value['source_browser']])){
            $tmp[$value['source_browser']] = $value;

        }else{
            $tmp[$value['source_browser']]['num'] += $value['num'];

        }

    }
    
    $tmp = array_values($tmp);
    echo '<pre>';
    var_dump($tmp);
    die();`
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文