2012-11-24 8 views
6

Wie verschmelzen mehrere Arrays aus einer einzigen Array-Variablen? können sagen, dass ich diese eine Array-VariableMehrere Arrays aus einem Array zusammenführen

Die sind in einer Variablen ..
$array = array(array(1), array(2));

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

, wie man am Ende mit diesem

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

Antwort

7

Dies ist die PHP-Äquivalent von JavaScript Function#apply (erzeugen eine Argumentliste aus einem Array):

$result = call_user_func_array("array_merge", $input); 

Demo: http://3v4l.org/nKfjp

+0

Hallo @Jan Ich habe ein ähnliches Array, das ich habe versucht, mit zu verschmelzen Ihr Beispielcode. Es ist jedoch ein geschachteltes Array, also hatte ich ein wenig Mühe, die Arrays innerhalb der Variablen zusammenzuführen. Hier ist, wie jedes Array aussieht http://pastebin.com/rF8HUDS2 Würde es Ihnen etwas ausmachen, mir zu zeigen, wie Sie Ihren Code mit diesen Arrays implementieren. – Anagio

+0

@Anagio Da Ihre Top-Level-Antworten Ein-Element-Arrays sind, die nur den 'result'-Schlüssel haben, müssen Sie [map] (http://php.net/manual/en/function.array-map.php) jeweils angeben Element zu seinem einzigen Element zuerst. In 5.3+ können Sie '$ input = array_map (function (x) {return x ['result']}, $ input)' schreiben –

1

$resultArray = array_merge ($array1, $array1);

in haben
$result = array(); 
foreach ($array1 as $subarray) { 
    $result = array_merge($result, $subarray); 
} 

// Here it is done 

Etwas Gutes zu lesen: http://ca2.php.net/manual/en/function.array-merge.php

Rekursiv:

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

+0

es gibt nur ein Array .. $ nur Array1 und es hat mehrere Arrays innerhalb, wie man sie zusammenführen? – Osa

+0

einfach so;) –

+0

das löst es fast, aber es ist immer noch ein bisschen kompliziert und nervig, eine Schleife zu machen und so, gibt es nicht eine einzige Funktion, das zu tun? – Osa

0

array_merge ist das, was Sie brauchen.

$arr = array_merge($arr1, $arr2); 

Edit:

$arr = array_merge($arr1[0], $arr1[1]); 
+0

gibt es nur ein Array .. $ arr1 nur und es hat mehrere Arrays innerhalb, wie man sie zusammenführt? – Osa

+0

@Osa: siehe bearbeiten. – xbonez

+1

Was ist, wenn mehr als zwei Elemente in '$ arr1' enthalten sind? –

1
$arr1 = array(0=>1); 
$arr2 = array(0=>2); 

$merged = array_merge($arr1,$arr2); 
print_r($merged); 
+0

lesen Sie das Update, gibt es keine $ arr2 – Osa

3

array_merge kann

$array_meged = array_merge($a, $b); 

nach dem Kommentar

Wenn feste indexs den Job können Sie:

$array_meged = array_merge($a[0], $a[1]); 

eine generische Lösung:

$array_meged=array(); 
    foreach($a as $child){ 
    $array_meged += $child; 
} 
+0

lesen Sie das Update, gibt es keine $ b – Osa

3

Dies funktioniert möglicherweise:

$array1 = array("item1" => "orange", "item2" => "apple", "item3" => "grape"); 
$array2 = array("key1" => "peach", "key2" => "apple", "key3" => "plumb"); 
$array3 = array("val1" => "lemon"); 

$newArray = array_merge($array1, $array2, $array3); 

foreach ($newArray as $key => $value) { 
    echo "$key - <strong>$value</strong> <br />"; 
} 
1

Seit PHP 5.6 können Sie variadics und Argument Auspacken verwenden.

$result = array_merge(...$input); 

Es ist bis zu 3x schneller als call_user_func_array.

Verwandte Themen