
正文
数据合并计算php excel相同的数据合并计算
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
PHP 多个数组合并 重新生成新的数组并按要求值相加
$aa='[{"id": 0, "num": "2", "name": "产品1", "price": "37", "amount": 74, "zdamount": 100}, {"id": 1, "num": "2", "name": "产品2", "price": "37", "amount": 74, "zdamount": 100}]';
$bb='[{"id": 0, "num": "3", "name": "产品1", "price": "37", "amount": 90, "zdamount": 110}, {"id": 1, "num": "5", "name": "产品2", "price": "37", "amount": 150, "zdamount": 180}]';
$cc='[{"id": 2, "num": "3", "name": "产品3", "price": "37", "amount": 90, "zdamount": 110}, {"id": 1, "num": "5", "name": "产品2", "price": "37", "amount": 150, "zdamount": 180}]';
$j_a = json_decode($aa,1);
$j_b = json_decode($bb,1);
$j_c = json_decode($cc,1);
$arr_list = [$j_a,$j_b,$j_c];//把数组扔进大数组,这样可以随意增加个数
$result = [];
foreach ($arr_list as $k=$v) {//第一次循环,把原数组取出
foreach ($v as $key = $value) {//第二次循环,正式取出数据
if (isset($result[$value['id']])) {//如果有此id,则进行累加操作
$result[$value['id']]['num'] += $value['num'];
$result[$value['id']]['amount'] += $value['amount'];
$result[$value['id']]['zdamount'] += $value['zdamount'];
} else {//没有此id则进行赋值操作
$result[$value['id']]['id'] = $value['id'];
$result[$value['id']]['price'] = $value['price'];
$result[$value['id']]['name'] = $value['name'];
$result[$value['id']]['num'] = $value['num'];
$result[$value['id']]['amount'] = $value['amount'];
$result[$value['id']]['zdamount'] = $value['zdamount'];
}
}
}
echo json_encode($result,320);//输出结果,如果需要序列化键值,可以使用array_values($result)
相关问答
Q1: PHP合并数组几种方式总结
PHP 中的 array_merge()、array_merge_recursive()函数可以实现
array_merge() 函数把两个或多个数组合并为一个数组。
如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的)。如果数组是数字索引的,则键名会以连续方式重新索引。
注意:如果仅仅向 array_merge() 函数输入了一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引。
array_merge(array1,array2,array3...)
参数说明
array1 必需。输入的第一个数组。
array2 必需。输入的第二个数组。
array3 可选。可指定的多个输入数组。
例如:
?php
$a1=array("a"="Horse","b"="Dog");
$a2=array("c"="Cow","b"="Cat");
print_r(array_merge($a1,$a2));
?
输出:
Array ( [a] = Horse [b] = Cat [c] = Cow )
仅使用一个数组参数:
?php
$a=array(3="Horse",4="Dog");
print_r(array_merge($a));
?
输出:
Array ( [0] = Horse [1] = Dog )
array_merge_recursive() 函数与array_merge()函数不同的是,当有重复的键名时,值不会被覆盖,而是将多个相同键名的值递归组成一个数组。
例如:
?php
$a1=array("a"="Horse","b"="Dog");
$a2=array("c"="Cow","b"="Cat");
print_r(array_merge_recursive($a1,$a2));
?
输出:
Array (
[a] = Horse
[b] = Array ( [0] = Dog [1] = Cat )
[c] = Cow
)
Q2: php数组问题,合并计算。
$result=array();
foreach($hello as $array){
$result[$array["uid"]]["order_count"]=$array["order_count"]+(isset($result[$array["uid"]]["order_count"])?$result[$array["uid"]]["order_count"]:0);
$result[$array["uid"]]["count"]=1+(isset($result[$array["uid"]]["count"])?$result[$array["uid"]]["count"]:0);
}
$tmp=array();
foreach($result as $key=$array){
$tmp[$key]=$array["order_count"];
}
arsort($tmp);
$newarray=array();
$i=0;
foreach($tmp as $key=$array){
$newarray[$i]["uid"]=$key;
$newarray[$i]["order_count"]=$result[$key]["order_count"];
$newarray[$i]["count"]=$result[$key]["count"];
$i++;
}
print_r($newarray);
关于数据合并计算php和excel相同的数据合并计算的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







