2013-04-25 12 views
5

अगर मैं एक सरणी जो कुछ इस तरह दिखता है:पीएचपी, बहुआयामी सरणी में कुंजी मर्ज

Array 
(
    [0] => Array 
    (
     [DATA] => Array 
    (
     VALUE1 = 1 
     VALUE2 = 2 
    ) 
    ) 
    [1] => Array 
    ( 
     [DATA] => Array 
    (
     VALUE3 = 3 
     VALUE4 = 4 
    ) 
    ) 
) 

और यह इस में बदलने के लिए करना चाहते हैं:

Array 
(
    [0] => Array 
    (
     [DATA] => Array 
    (
     VALUE1 = 1 
     VALUE2 = 2 
     VALUE3 = 3 
     VALUE4 = 4 
    ) 
    ) 
) 

मैं मूल रूप से सभी मर्ज करना चाहते हैं समान कुंजी जो समान स्तर पर हैं। इसे पूरा करने के लिए सबसे अच्छा मार्ग क्या होगा? क्या array_merge फ़ंक्शंस किसी भी उपयोग के लिए हो सकता है?

मुझे उम्मीद है कि यह किसी भी तरह की समझ के लिए अग्रिम में किसी भी तरह की भावना और धन्यवाद देता है।

उत्तर

12

आप अपने मूल सरणी में सभी आइटमों को एक साथ मर्ज करने के लिए array_merge_recursive का उपयोग कर सकते हैं। और उस समारोह तर्क के परिवर्तनशील है, यह बोझल बना लेता है के बाद से जब इस नंबर संकलन समय पर अज्ञात है, आप अतिरिक्त सुविधा के लिए call_user_func_array उपयोग कर सकते हैं:

$result = call_user_func_array('array_merge_recursive', $array); 

परिणाम आपके इनपुट के "शीर्ष स्तरीय" होगा छेड़छाड़ (तार्किक, क्योंकि आप एक से अधिक वस्तुओं को विलय कर रहे हैं) लेकिन शेष शेष संरचना को बनाए रखेंगे।

See it in action

+0

मैं सोच रहा था कि लूप को लिखने के बिना ऐसा करने का कोई तरीका था - बहुत साफ! – lewsid

संबंधित मुद्दे