Php 即使存在重复值,如何测量两个数组?
如果可能的话,请解释为什么array_combine忽略了它Php 即使存在重复值,如何测量两个数组?,php,arrays,Php,Arrays,如果可能的话,请解释为什么array_combine忽略了它 在获得一个数组之后,我实际需要的是对相同键的值求和,听起来好像您只想将两个数组映射在一起: sele_itmid = Array ( [0] => 1 [1] => 1 [2] => 5 [3] => 6 ) $recp_qty = Array ( [0] => 4
在获得一个数组之后,我实际需要的是对相同键的值求和,听起来好像您只想将两个数组映射在一起:
sele_itmid =
Array
(
[0] => 1
[1] => 1
[2] => 5
[3] => 6
)
$recp_qty =
Array
(
[0] => 4
[1] => 16
[2] => 1
[3] => 10
)
//when i tried using
$comine = array_combine($sele_itmid,$recp_qty);
print_r($comine);exit();
am getting a result like
Array
(
[1] => 16
[5] => 1
[6] => 10
)
what i actually want is
[1]=>4
[1] => 16
[5] => 1
[6] => 10
在这里,$sele_itmid的值用作$comine数组的键。因为数组不能有重复的键,所以第一个值被拒绝。“为什么数组忽略它?”-数组不允许重复键。
下面是一个使用
array\u map
函数的简单解决方案(它将汇总相同键的值):
输出:
$result = [];
array_map(function($key, $b) use (&$result){
(isset($result[$key]))? $result[$key] += $b : $result[$key] = $b;
}, $sele_itmid, $recp_qty);
print_r($result);
如果我有一个像$array=[1=>[4,16],…]这样的数组,我该如何求和?@mureinik。谢谢你的时间,还是不走运。还有其他方法吗?
$result = [];
array_map(function($key, $b) use (&$result){
(isset($result[$key]))? $result[$key] += $b : $result[$key] = $b;
}, $sele_itmid, $recp_qty);
print_r($result);
Array
(
[1] => 20
[5] => 1
[6] => 10
)