PHP数组处理,二维数组,去重以及值相加。想了半天没有想到,求帮助?
本文介绍了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屋!
查看全文