[英]How to merge array in PHP
I want to merge same array id into 1 array and and sum pageview using PHP. 我想将相同的数组ID合并为1个数组,并使用PHP对综合浏览量进行汇总。 Please Help me.
请帮我。
Code 码
Array
(
[0] => Array
(
[id] => 17088
[PageView] => 5575
)
[1] => Array
(
[id] => 17088
[PageView] => 4338
)
[2] => Array
(
[id] => 1121
[PageView] => 3922
)
[3] => Array
(
[id] => 11397
[PageView] => 2625
)
[4] => Array
(
[id] => 9638
[PageView] => 2541
)
[5] => Array
(
[id] => 11397
[PageView] => 2377
)
[6] => Array
(
[id] => 1121
[PageView] => 10
)
)
Result: 结果:
Array
(
[0] => Array
(
[id] => 17088
[PageView] => 9913
)
[1] => Array
(
[id] => 1121
[PageView] => 3932
)
[2] => Array
(
[id] => 11397
[PageView] => 5002
)
[3] => Array
(
[id] => 9638
[PageView] => 2541
)
)
Thank you 谢谢
It's very simple : 这很简单:
error_reporting(E_ALL ^ E_NOTICE);
foreach ($array as $row)
$grouped[$row['id']] += $row['PageView'];
print_r($grouped);
You can use below logic, 您可以使用以下逻辑,
$test = [1=> ['id'=>10, 'sum'=>10],['id'=>12, 'sum'=>10],['id'=>10, 'sum'=>10]];
merge($test);
function merge($array)
{
$tempArray = array();
foreach($array as $key=>$value) {
if(array_key_exists($value['id'],$tempArray)) {
$tempArray[$value['id']]['sum'] = $tempArray[$value['id']]['sum'] + $value['sum'];
} else {
$tempArray[$value['id']] = $value;
}
}
print "<pre>"; print_r($tempArray); exit;
}
Just loop the array and sum if the key already exist. 只需循环数组并求和(如果键已经存在)。
I make an associative array on the id which makes it easy to sum in the loop. 我在id上创建了一个关联数组,可以很容易地在循环中求和。
If you want an indexed array you can use array_values after the loop. 如果需要索引数组,则可以在循环后使用array_values。
foreach($arr as $sub){
if(isset($new[$sub['id']])){
$new[$sub['id']]['PageView'] = $new[$sub['id']]['PageView'] + $sub['PageView'];
}else{
$new[$sub['id']] = $sub;
}
}
var_dump($new);
Output: 输出:
array(4) {
[17088]=>
array(2) {
["id"]=>
string(5) "17088"
["PageView"]=>
int(9913)
}
[1121]=>
array(2) {
["id"]=>
string(4) "1121"
["PageView"]=>
int(3932)
}
[11397]=>
array(2) {
["id"]=>
string(5) "11397"
["PageView"]=>
int(5002)
}
[9638]=>
array(2) {
["id"]=>
string(4) "9638"
["PageView"]=>
string(4) "2541"
}
}
Try This code- 试试这个代码-
This is your array - 这是你的数组-
$a = array(0=>array('id' => 17088,'PageView' => 5575),1=>array('id' => 17088,'PageView' => 4338),2=>array('id' => 1121,'PageView' => 3922),3=>array('id' => 11397,'PageView' => 2625),4=>array('id' => 9638,'PageView' => 2541),5=>array('id' => 11397,'PageView' => 2377),6=>array('id' => 1121,'PageView' => 10));
$b=array();
foreach ($a as $key => $value) {
if(isset($b[$value['id']]) && count($b[$value['id']])){
$b[$value['id']]['PageView']=$b[$value['id']]['PageView']+$value['PageView'];
}else{
$b[$value['id']]['id']=$value['id'];
$b[$value['id']]['PageView']=$value['PageView'];
}
}
print_r($b);
Output - 输出-
Array
(
[17088] => Array
(
[id] => 17088
[PageView] => 9913
)
[1121] => Array
(
[id] => 1121
[PageView] => 3932
)
[11397] => Array
(
[id] => 11397
[PageView] => 5002
)
[9638] => Array
(
[id] => 9638
[PageView] => 2541
)
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.