最近做的一个项目要实现多个相同数组的相加合并功能,需要实现对应键名的键值相加,具体说明如下:
有如下多个数组:
array(13) { [14] => string(1) "4" [15] => string(1) "4" [16] => string(1) "4" [17] => string(1) "4" [18] => string(1) "4" [19] => string(2) "30" [20] => string(2) "10" [21] => string(1) "5" [22] => string(1) "2" [23] => string(1) "2" [24] => string(1) "1" [25] => string(2) "17" [26] => string(2) "10" } array(13) { [14] => string(1) "4" [15] => string(1) "4" [16] => string(1) "3" [17] => string(1) "3" [18] => string(1) "4" [19] => string(2) "30" [20] => string(2) "10" [21] => string(1) "5" [22] => string(1) "2" [23] => string(1) "1" [24] => string(1) "1" [25] => string(2) "15" [26] => string(2) "10" } array(13) { [14] => string(1) "3" [15] => string(1) "4" [16] => string(1) "4" [17] => string(1) "4" [18] => string(1) "4" [19] => string(2) "30" [20] => string(1) "5" [21] => string(1) "5" [22] => string(1) "2" [23] => string(1) "2" [24] => string(1) "1" [25] => string(2) "15" [26] => string(2) "10" }
要合并为一个数组,其中对应项的值相加,得出的数组如下(以下数组只为示例,并非实际运算结果):
array(13) { [14] => int(11) [15] => int(12) [16] => int(14) [17] => int(14) [18] => int(16) [19] => int(118) [20] => int(34) [21] => int(19) [22] => int(8) [23] => int(7) [24] => int(4) [25] => int(65) [26] => int(38) }
具体函数代码:
//数组相同键,值相加。 function array_value_sum(){ $res = array(); foreach (func_get_args() as $arr) { foreach ($arr as $k => $v){ if (!isset($res[$k])){ $res[$k] = $v; }else{ $res[$k] += $v; } } } return $res; }
调用方式:
$arr = array(); foreach ($array as $k => $v) { $v = json_decode($v,true); $arr = array_value_sum($v,$arr); } var_dump($arr);
声明:1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。







