Aşağıda bazı avantajları olan başka bir sürüm.
$sum = ArrayHelper::copyKeys($arr[0]);
foreach ($arr as $item) {
ArrayHelper::addArrays($sum, $item);
}
class ArrayHelper {
public function addArrays(Array &$to, Array $from) {
foreach ($from as $key=>$value) {
$to[$key] += $value;
}
}
public function copyKeys(Array $from, $init=0) {
return array_fill_keys(array_keys($from), $init);
}
}
Gumbo's, Graviton's ve Chris J'nin en iyi cevabını aşağıdaki hedeflerle birleştirmek istedim, böylece bunu uygulamamda kullanabilirim:
a) Döngünün dışındaki 'toplam' dizi anahtarlarını başlatın (Gumbo). Çok büyük dizilerde performansa yardımcı olmalıdır (henüz test edilmemiştir!). Bildirimleri ortadan kaldırır.
b) Kılavuzlara basmadan ana mantığı anlamak kolaydır. (Graviton, Chris J).
c) Herhangi iki dizinin değerlerini aynı anahtarlarla toplama gibi daha genel bir sorunu çözün ve alt dizi yapısına daha az bağımlı hale getirin.
Gumbo'nun çözümünden farklı olarak, değerlerin alt dizilerde olmadığı durumlarda bunu yeniden kullanabilirsiniz. Bu aşağıdaki örnekte düşünün $arr1
ve $arr2
kodlanmış değil, bir döngü içinde bir işlevinin çağrılması sonucunda döndürülen edilmektedir.
$arr1 = array(
'gozhi' => 2,
'uzorong' => 1,
'ngangla' => 4,
'langthel' => 5
);
$arr2 = array(
'gozhi' => 5,
'uzorong' => 0,
'ngangla' => 3,
'langthel' => 2
);
$sum = ArrayHelper::copyKeys($arr1);
ArrayHelper::addArrays($sum, $arr1);
ArrayHelper::addArrays($sum, $arr2);