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

查看:112
本文介绍了PHP数组处理,二维数组,去重以及值相加。想了半天没有想到,求帮助?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

<?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为相加后的
?>

解决方案

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

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

这篇关于PHP数组处理,二维数组,去重以及值相加。想了半天没有想到,求帮助?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆