Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 即使存在重复值,如何测量两个数组?_Php_Arrays - Fatal编程技术网

Php 即使存在重复值,如何测量两个数组?

Php 即使存在重复值,如何测量两个数组?,php,arrays,Php,Arrays,如果可能的话,请解释为什么array_combine忽略了它 在获得一个数组之后,我实际需要的是对相同键的值求和,听起来好像您只想将两个数组映射在一起: sele_itmid = Array ( [0] => 1 [1] => 1 [2] => 5 [3] => 6 ) $recp_qty = Array ( [0] => 4

如果可能的话,请解释为什么array_combine忽略了它


在获得一个数组之后,我实际需要的是对相同键的值求和,听起来好像您只想将两个数组映射在一起:

    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
)