2012-11-24 24 views
6

Jak scalić wiele tablic z jednej zmiennej tablicowej? powiedzmy, że mam to w jeden tablicy zmiennejScalanie wielu tablic z jednej tablicy

Są jednej zmiennej ..
$array = array(array(1), array(2));

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

jak skończyć z tym

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

Odpowiedz

7

Odpowiada to PHP JavaScript Function#apply (generować listę argument tablicy)

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

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

+0

Hi @ Jan Mam podobną tablicę, którą próbowałem scalić za pomocą Twój przykładowy kod. Jest to macierz zagnieżdżona, więc miałem trochę problemów z scaleniem tablic wewnątrz zmiennej. Oto jak każda macierz wygląda na http://pastebin.com/rF8HUDS2, czy mógłbyś pokazać mi jak zaimplementować twój kod z tymi tablicami. – Anagio

+0

@Anagio, ponieważ twoje odpowiedzi na najwyższym poziomie są tablicami jednoelementowymi z tylko kluczem 'result', musisz [map] (http://php.net/manual/en/function.array-map.php) element do jego jedynego elementu jako pierwszy. W 5.3+ możesz napisać '$ input = array_map (function (x) {return x ['result']}, $ input)' –

1

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

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

// Here it is done 

Coś dobrego do czytania: http://ca2.php.net/manual/en/function.array-merge.php

rekurencyjne:

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

+0

jest tylko jedna tablica .. tylko $ tablica1 i ma wiele tablic wewnątrz, jak je scalić? – Osa

+0

właśnie tak;) –

+0

, który prawie rozwiązuje go, ale wciąż jest dość skomplikowany i denerwujący, aby zrobić pętlę i inne rzeczy, czy nie ma w tym żadnej funkcji? – Osa

0

array_merge jest to, czego potrzebujesz.

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

Edit:

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

jest tylko jedna tablica .. $ arr1 tylko i ma wiele tablic wewnątrz, jak je scalić? – Osa

+0

@Osa: patrz edycja. – xbonez

+1

co, jeśli w '$ arr1' jest więcej niż dwa elementy? –

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

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

odczytanie aktualizacji, nie ma $ arr2 – Osa

3

array_merge może wykonać pracę

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

po komentarzu

Jeśli stałych Indexs można użyć:

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

Bardziej ogólne rozwiązanie:

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

odczytanie aktualizacji, nie ma $ b – Osa

3

Może to działać:

$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

Od PHP 5.6 można użyć variadics i argumentu rozpakowywania.

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

Jest do 3 razy szybszy niż call_user_func_array.

Powiązane problemy