2010-11-01 14 views
9

मैं जैसे ही स्थान में सभी चाबियाँ रखते हुए और मूल्यों लिस्टिंग एक सरणी में इस उदाहरण में दो सरणियों में विलय करने के लिए प्राप्त करने की आवश्यकता के साथ सरणियों विलय:पीएचपी, आम कुंजी

$array1 = array('car' => '3', 'bus' => '2'); 
$array2 = array('dog' => '1', 'car' => '2', 'bird' => '9'); 

$merged = array(
    'car' => array('3','2'), 
    'bus' => array('2',null), 
    'dog' => array(null,'1'), 
    'bird' => (null,'9') 
); 

उत्तर

14
function merge_common_keys(){ 
    $arr = func_get_args(); 
    $num = func_num_args(); 

    $keys = array(); 
    $i = 0; 
    for ($i=0; $i<$num; ++$i){ 
     $keys = array_merge($keys, array_keys($arr[$i])); 
    } 
    $keys = array_unique($keys); 

    $merged = array(); 

    foreach ($keys as $key){ 
     $merged[$key] = array(); 
     for($i=0; $i<$num; ++$i){ 
      $merged[$key][] = isset($arr[$i][$key]) ? $arr[$i][$key] : null; 
     } 
    } 
    return $merged; 
} 

उपयोग:

$merged = merge_common_keys($array1,$array2); 

पी एस। यह दो से अधिक सरणी के साथ काम कर सकता है, बस जितना चाहें उतना पास करें जितना आप अगले तर्क के रूप में चाहते हैं।

+1

आपको बहुत धन्यवाद सर। – Mohammad

1

कुछ इस तरह? http://php.net/array_merge_recursive

+1

यह शून्य के साथ सरणी उत्पन्न नहीं करेगा यदि कुंजी केवल एक सरणी में मौजूद है, तो केवल दूसरे सरणी से मूल्य के साथ स्ट्रिंग करें। –

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