2011-12-19 19 views
9

मेरे पास दो सरणी हैं, मैं इन दो सरणी को एकल सरणी में विलय करना चाहता हूं।php विलय दो arrays

पहली सरणी:

Array 
(
    [0] => Array 
     (
      [a] => 1 
      [b] => 2 
      [c] => 3 
     ) 

    [1] => Array 
     (
      [a] => 3 
      [b] => 2 
      [c] => 1 
     ) 
) 

दूसरी सरणी:

Array 
(
    [0] => Array 
     (
      [d] => 4 
      [e] => 5 
      [f] => 6 
     ) 

    [1] => Array 
     (
      [d] => 6 
      [e] => 5 
      [f] => 4 
     ) 
) 

मैं इस परिणाम चाहते हैं नीचे विस्तार देखें। क्या कोई जानता है कि यह कैसे करें?

Array 
(
    [0] => Array 
     (
      [0] => 1 
      [1] => 2 
      [2] => 3 
     ) 

    [1] => Array 
     (
      [0] => 3 
      [1] => 2 
      [2] => 1 
     ) 
    [2] => Array 
     (
      [0] => 4 
      [1] => 5 
      [2] => 6 
     ) 

    [3] => Array 
     (
      [0] => 6 
      [1] => 5 
      [2] => 4 
     ) 
) 

आशा है कि आप इस प्रश्न को समझ चुके हैं। अग्रिम धन्यवाद।

+4

वहाँ कुछ [array_merge] (http://php.net/array_merge) का उपयोग कर के साथ कुछ गलत है? –

+0

@ जोनस्टर्लिंग हां, यदि आप परिणाम चाहते हैं तो ओपी निर्दिष्ट करता है क्योंकि मूल सरणी की चाबियाँ सुरक्षित रखेगी। ध्यान दें कि उनके उत्तर में उनके उप-सरणी के लिए 0-आधारित इंडेक्स हैं। चाहे वह नतीजा है या न केवल वह जवाब दे सकता है! – liquorvicar

+0

मुझे array_merge के साथ कोई समस्या नहीं दिख रही है। ओपी की तरह दिखता है: http://codepad.org/Bf5VpZOr – PiTheNumber

उत्तर

3

निर्धारित (फिर)

function array_merge_to_indexed() { 
    $result = array(); 

    foreach (func_get_args() as $arg) { 
     foreach ($arg as $innerArr) { 
      $result[] = array_values($innerArr); 
     } 
    } 

    return $result; 
} 

इनपुट सरणियों के एक असीमित संख्या में स्वीकार करता है, अनुक्रमित सरणियों के रूप में एक कंटेनर में सभी उप सरणियों विलीन हो जाती है, और परिणाम देता है ।

संपादित 03/2014: बेहतर पठनीयता और दक्षता

+1

यह उन सरणी से मूल कुंजी को सुरक्षित रखता है जो नतीजे नहीं हैं (कम से कम प्रश्न में डेटा से नहीं)। – liquorvicar

+1

@liquorvicar नहीं, यह नहीं है, यह फ़ंक्शन का बिंदु है, अन्यथा मैंने अभी कहा होगा "array_merge()" का उपयोग करें। मैंने इंडेक्स में कनवर्ट करने के लिए '[]' का उपयोग किया, हालांकि अंतिम लूप दृष्टिकोण के बिना आपका 'array_values ​​() 'तर्कसंगत रूप से बेहतर है। – DaveRandom

+1

आह ठीक है, मैंने आपका कोड चलाया है और यह मेरे लिए काम नहीं करता है लेकिन आपकी संपादित पोस्ट को देखकर यह एक पुराना संस्करण होना चाहिए जो मैंने भाग लिया था। – liquorvicar

1

आप सटीक परिणाम आप अपने प्रश्न में निर्दिष्ट वापस जाने के लिए चाहते हैं, तो कुछ इस तरह काम करेंगे

function array_merge_no_keys() { 
    $result = array(); 
    $arrays = func_get_args(); 
    foreach($arrays as $array) { 
     if(is_array($array)) { 
      foreach($array as $subArray) { 
       $result[] = array_values($subArray); 
      } 
     } 
    } 
    return $result; 
} 
0

array_merge करता है चाल:

$a = array(array(1,2,3), array(3,2,1)); 
$b = array(array(4,5,6), array(6,5,4)); 
var_dump(array_merge($a, $b)); 

इसे आजमाएं: http://codepad.org/Bf5VpZOr

बिल्कुल वांछित परिणाम।

+0

लेकिन यह ओपी का उपयोग नहीं कर रहा डेटा है। इनपुट उप-सरणी में कुंजी सहयोगी (एकल अक्षरों) होती हैं और परिणाम सरणी वे 0-आधारित इंडेक्स का उपयोग कर रहे हैं। – liquorvicar

+0

हाँ मुझे पता है कि array_merge '$ a = array (सरणी (1,2,3), सरणी (3,2,1)) में चाल करता है; $ बी = सरणी (सरणी (4,5,6), सरणी (6,5,4)); var_dump (array_merge ($ a, $ b)); ' लेकिन मेरे कोड में नहीं। –

+0

आह, मुझे पता है कि मैं इसे देखता हूँ! हर कोई कहता रहता है कि परिणाम गलत है लेकिन यह इनपुट है। उसके लिए माफ़ करना। – PiTheNumber

0

आप भी उपयोग कर सकते हैं: array_merge_recursive; बहुआयामी सरणी के लिए।

<?php 
    $ar1 = array("color" => array("favorite" => "red"), 5); 
    $ar2 = array(10, "color" => array("favorite" => "green", "blue")); 
    $result = array_merge_recursive($ar1, $ar2); 
    print_r($result); 
?> 

परिणाम:

Array(
    [color] => Array 
     (
      [favorite] => Array 
       (
        [0] => red 
        [1] => green 
       ) 

      [0] => blue 
     ) 

    [0] => 5 
    [1] => 10 
) 

स्रोत: PHP Manual

3

अधिक सरल और आधुनिक तरीका है:

$merged = $array1 + ['apple' => 10, 'orange' => 20] + ['cherry' => 12, 'grape' => 32]; 

php से नई सरणी वाक्य रचना 5.4

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