2016-04-02 27 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 

Eğer mümkünse lütfen neden array_combine'ın ihmal ettiğini açıklayın !!Yinelenen değerler olsa bile iki diziyi temizlemenin yolu nedir?

i aslında aynı tuşların

değerlerini toplamak gerekir istediğini bir dizi aldıktan sonra
+0

dizi = [1 => [4, 16], ...]? –

cevap

1

"Neden array_combine onu ihmal ediyor?" - bir dizi kopya anahtarlara izin vermez.
İşte (aynı anahtarların değerlerini özetleyecek) array_map fonksiyonunu kullanarak basit bir çözümdür:

$result = []; 

array_map(function($key, $b) use (&$result){ 
    (isset($result[$key]))? $result[$key] += $b : $result[$key] = $b; 
}, $sele_itmid, $recp_qty); 

print_r($result); 

çıkışı: i $ gibi bir dizi varsa ben özetleyebilirim nasıl

Array 
(
    [1] => 20 
    [5] => 1 
    [6] => 10 
) 
0

Sesler sadece iki diziyi birlikte harita isterdim sanki:

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

@ mureinik.Zaman için teşekkürler Hala hayır şans. –

0

sele_itmid $ Buraya ' s değerleri $ comine dizisinin anahtarı olarak kullanılır. Bir dizide yinelenen anahtarlar bulunamadığından ilk değer reddedilir.

+0

Bunu yapmak için başka bir yolu var mı? –

İlgili konular