एक और संस्करण, नीचे कुछ लाभों के साथ।
$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);
}
}
मैं गुमबो के सर्वश्रेष्ठ, ग्रेविटन और क्रिस जे के जवाब को निम्न लक्ष्यों के साथ जोड़ना चाहता था ताकि मैं अपने ऐप में इसका उपयोग कर सकूं:
a) लूप (Gumbo) के बाहर 'sum ’एरो कीज़ को इनिशियलाइज़ करें। बहुत बड़े सरणियों (अभी तक परीक्षण नहीं किया गया है) पर प्रदर्शन के साथ मदद करनी चाहिए। नोटिस को समाप्त करता है।
ख) मुख्य तर्क मैनुअल को पकड़े बिना समझना आसान है। (ग्रेविटन, क्रिस जे)।
ग) किसी भी दो सरणियों के मूल्यों को एक ही कुंजी के साथ जोड़ने की अधिक सामान्य समस्या को हल करें और इसे उप-सरणी संरचना पर कम निर्भर करें।
गम्बो के समाधान के विपरीत, आप उन मामलों में इसका पुन: उपयोग कर सकते हैं जहां मान उप-सरणियों में नहीं हैं। नीचे दिए गए उदाहरण में कल्पना करें $arr1
और $arr2
हार्ड-कोडेड नहीं हैं, लेकिन लूप के अंदर फ़ंक्शन को कॉल करने के परिणामस्वरूप वापस किया जा रहा है।
$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);