2016-04-02 12 views
1
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がそれを無視している理由を説明してください。私は実際にあなたがちょうど2つの配列を一緒にマッピングしたいと思いますかのように同じキーの値重複した値が存在しても2つの配列を区別する方法は何ですか?

+0

array = [1 => [4,16]、...]? –

答えて

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 
) 
0

サウンドを合計する必要が欲しいものを配列取得した後、

:ここで$ sele_itmidで

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

@ mureinik.Thanksあなたの時間のためにまだ運がない。 –

0

」を$ comine配列のキーとして使用されます。配列には重複キーが存在しないため、最初の値は拒否されます。

+0

他の方法がありますか? –

関連する問題