<?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 回答
![?](http://img1.sycdn.imooc.com/533e4d660001312002000200-100-100.jpg)
慕妹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 秒) - 正常终止
排序有点问题,如果你想按你的那样排序,自己写一个循环也是很简单的。我就不多写了。
![?](http://img1.sycdn.imooc.com/5458477f0001cabd02200220-100-100.jpg)
沧海一幻觉
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();`
- 2 回答
- 0 关注
- 604 浏览
添加回答
举报
0/150
提交
取消