2013-02-19 14 views
5

में एक एकल सरणी के लिए उप सरणियों जोड़ना चाहते हैं मैं इस तरह सरणी है .........मैं php

Array 
(
    [0] => Array 
     (
      [0] => rose 
      [1] => monkey 
      [2] => donkey 
     ) 

    [1] => Array 
     (
      [0] => daisy 
      [1] => monkey 
      [2] => donkey 
     ) 

    [2] => Array 
     (
      [0] => orchid 
      [1] => monkey 
      [2] => donkey 
     ) 

) 

और मैं इस तरह चाहते हैं .........

Array 
(
    [0] => rose 
    [1] => monkey 
    [2] => donkey 
    [3] => daisy 
    [4] => monkey 
    [5] => donkey 
    [6] => orchid 
    [7] => monkey 
    [8] => donkey 
) 

.... मैंने सरणी विलय का उपयोग किया लेकिन यह काम नहीं कर रहा है क्योंकि मेरी सरणी रंगमयी उत्पन्न करती है और हर बार अलग-अलग सरणी दिखाती है। समस्या यह है कि मैं array_merge() फ़ंक्शन में गतिशील रूप से सरणी को पार नहीं कर सकता। यह केवल सरणी की मैन्युअल प्रविष्टियों को स्वीकार करता है और किसी अन्य चर को स्वीकार नहीं करता है। फ़ंक्शन केवल सरणी स्वीकार करता है।

इसे इस तरह से काम करता है ...

$total_data = array_merge($data[0],$data[1],$data[2]); 

हर बार के रूप में यह सरणी की विभिन्न संख्या गतिशील तो मैं इस तरह का उपयोग करने के उत्पन्न करता है ....

$data_array = $data[0],$data[1],$data[2]; 

$total_data = array_merge($data_array); 

लेकिन यह पता चलता है एक त्रुटि "array_merge() [function.array-merge]: तर्क # 1 एक सरणी नहीं है" ......

+0

क्यों आप अपनी आवश्यकताओं के रूप में एक नई सरणी बनाने के लिए array_push प्रयोग नहीं करते। http://php.net/manual/en/function.array-push.php –

उत्तर

16

इस प्रयास करें:

$array = your array 

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

echo "<pre>"; 
print_r($result); 

या इस प्रयास करें:

function array_flatten($array) { 

    $return = array(); 
    foreach ($array as $key => $value) { 
     if (is_array($value)){ $return = array_merge($return, array_flatten($value));} 
     else {$return[$key] = $value;} 
    } 
    return $return; 

} 

$array = Your array 

$result = array_flatten($array); 

echo "<pre>"; 
print_r($result); 
+0

यह इस प्रश्न का सही उत्तर है, इसे जानने के लिए 3 प्रश्नों और बुरे उत्तरों के माध्यम से जाना था, धन्यवाद। – spongeworthy

1

इसे आजमाएं .....

 $result = array(); 
     foreach($data as $dat) 

      { 
       foreach($dat as $d) 

       { 
        $result[] = $d; 

       } 

      } 
+0

'foreach ($ arr के रूप में $ डेटा) foreach ($ arr $ $ val के रूप में) $ परिणाम [] = $ val;' वास्तव में कोई आवश्यकता नहीं है इस तरह के जटिल सरणी पुनरावृत्ति ... – deceze

+0

टिप्पणी के लिए धन्यवाद ...... –