2016-03-21 16 views
0

Wir haben diese Arrays anhängen,Wie mehrdimensionales Array zu Array PHP

<?php 
    $arr1=array(0,1,2,3); 
    $arr2=array(array(0,1,2,3)); 

    array_push($arr1,$arr2); 
    echo "<pre>"; 
    print_r($arr1); 
?> 

Ausgang:

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

     ) 

) 

Erwartet:

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

Wir haben versucht array_push ($ arr1, $ arr2)

Antwort

1

Lösung für „dynamic“ mehrdimensionale Arrays mit array_merge_recursive und array_walk_recursive Funktionen:

$arr1 = array(0,1,2,3); 
$arr2 = array(array(0,1,2,3), array(0 => array(4,5), 2)); 
$merged = array_merge_recursive($arr1,$arr2); 

$result = []; 
array_walk_recursive($merged, function($v,$k) use(&$result){ 
    $result[] = $v; 
}); 
var_dump($result); 

Der Ausgang:

Array 
(
    [0] => 0 
    [1] => 1 
    [2] => 2 
    [3] => 3 
    [4] => 0 
    [5] => 1 
    [6] => 2 
    [7] => 3 
    [8] => 4 
    [9] => 5 
    [10] => 2 
) 

http://php.net/manual/en/function.array-walk-recursive.php
http://php.net/manual/en/function.array-merge-recursive.php

+0

danke viel! dankbare Antwort !! – SagarPPanchal

+0

Gern geschehen ... – RomanPerekhrest

0

array_merge($arr1,$arr2); wird funktionieren.

+0

nein! es ersetzt bestehende Werte – SagarPPanchal

1

Versuchen Sie folgendes:

$arr1=array(0,1,2,3); 
$arr2=array(array(0,1,2,3)); 

$result = array_merge($arr1, $arr2[0]); 
echo "<pre>"; 
print_r($result); 

Sie dies auch mit einem langen Weg zu bekommen:

for($i=0;$i<count($arr2[0]);$i++) 
{ 
    array_push($arr1,$arr2[0][$i]); 
} 
echo "<pre>"; 
print_r($arr1); 
+0

der Weg ist gut, aber es ist nicht machbar für dynamisch mehrere Arrays – SagarPPanchal

+0

Ja, ich weiß, meine Antwort ist wie in dem Beispiel in Frage gestellt. Beide Arrays können dynamisch sein oder nur $ arr2? – AkshayP

0

I Funktion geschrieben, die Werte von jedem mehrdimensionales Array wird und ich es Ergebnisarray bei der Erstellung:

<?php 

$arr1=array(0,1,2,3); 
$arr2=array(array(0,1,2,3)); 
$arr3=array(array(array(0,1,2,3))); 


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

    if(isset($array[0]) && is_array($array[0])) 
     $result = getValues($array[0]); 
    else 
    { 
     $result = $array; 
    } 

    return $result; 
} 


$arr1Values = getValues($arr1); 
$arr2Values = getValues($arr2); 
$arr3Values = getValues($arr3); 

$result = $arr1Values; 

foreach($arr2Values as $value) 
{ 
    $result[] = $value; 
} 

foreach($arr3Values as $value) 
{ 
    $result[] = $value; 
} 

echo '<pre>'; 
print_r($result); 
echo '</pre>'; 

Ergebnis ist:

Array 
(
    [0] => 0 
    [1] => 1 
    [2] => 2 
    [3] => 3 
    [4] => 0 
    [5] => 1 
    [6] => 2 
    [7] => 3 
    [8] => 0 
    [9] => 1 
    [10] => 2 
    [11] => 3 
) 
2

Es gibt keine integrierte Funktionalität dafür. Allerdings können Sie es leicht mit rekursiven Funktionen oder mit rekursiven Iteratoren, zum Beispiel dieser:

$arrayIterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array2)); 
foreach($arrayIterator as $value) { 
    $array1[] = $value; 
} 

es kann auch ohne foreach erfolgen:

$flatArray = iterator_to_array(
    new RecursiveIteratorIterator(new RecursiveArrayIterator($array2)), 
    false 
); 
$array1 = array_merge($array1, $flatArray); 
+0

Danke viel! dankbare Antwort !! – SagarPPanchal

Verwandte Themen