为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
翻过高山走不出你 2019-03-18 18:06:11
<?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为相加后的?>
查看完整描述

2 回答

?
慕妹3146593

TA贡献1820条经验 获得超9个赞

<?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 秒) - 正常终止

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

查看完整回答
反对 回复 2019-03-18
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

` $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();`
查看完整回答
反对 回复 2019-03-18
  • 2 回答
  • 0 关注
  • 604 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信