即使存在重复值,两个阵列的方法是什么?

时间:2016-04-02 10:48:36

标签: php arrays

    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

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

获取数组后我真正想要的是需要对相同键的值进行求和

3 个答案:

答案 0 :(得分:1)

"为什么array_combine忽略了它?" - 数组不允许重复键 这是一个使用array_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] => 20
    [5] => 1
    [6] => 10
)

答案 1 :(得分:0)

听起来好像你只想将两个数组映射在一起:

function sum($v1, $v2) {
    return $v1 + $v2;
}
$result = array_map('sum', $sele_itmid, $recp_qty);

答案 2 :(得分:0)

在这里,$ sele_itmid的值被用作$ comine数组的键。由于数组不能有重复键,因此第一个值被拒绝。