从一个数组中合并多个数组

9
如何将单个数组变量中的多个数组合并?例如,我有一个数组变量:
$array = array(array(1), array(2));
其中包含多个数组。
Array
(
    [0] => 1
)
Array
(
    [0] => 2
)

如何达到这个目标?
Array
(
   [0] => 1
   [1] => 2
)
7个回答

19
这是PHP中类似于javascript的Function#apply函数的等价实现(从数组生成参数列表):
$result = call_user_func_array("array_merge", $input);

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


嗨@Jan,我有一个类似的数组,我已经尝试使用你的示例代码进行合并。但它是一个嵌套数组,所以我在将变量中的数组合并时遇到了一些麻烦。这是每个数组的样子http://pastebin.com/rF8HUDS2,你介意向我展示如何使用这些数组实现你的代码吗? - Anagio
@Anagio,由于您的顶级答案是仅包含“result”键的单元素数组,因此您需要首先将每个元素映射到其唯一元素。在5.3+中,您可以编写$input = array_map(function(x){return x['result']}, $input) - John Dvorak

10

PHP 5.6开始,您可以使用可变参数参数解包

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

它比call_user_func_array快3倍。


7
这可能有效:
$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 />"; 
}

那有什么用处? - Jesse Schokker

3

array_merge可以胜任此工作

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

在评论后面:
如果要使用固定的索引,您可以使用以下方法:
$array_meged = array_merge($a[0], $a[1]);

一个更通用的解决方案:
$array_meged=array();
  foreach($a as $child){
  $array_meged += $child;
}

2

只有一个数组 $array1,里面有多个数组,如何合并它们? - Osa
那几乎解决了问题,但循环和其他操作仍然有点复杂和烦人,难道没有一个单一的函数可以完成吗? - Osa
http://ca2.php.net/manual/zh/function.array-merge-recursive.php 但它可能不会完全按照您的要求工作。 - E_p
我不确定它真正做什么,但他们的示例也有两个数组,有点相似?可以展示一个例子吗? - Osa
@Osa如果你真的讨厌循环,你可以将array_merge应用到数组中。请看我的回答。 - John Dvorak

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

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

0

array_merge 是你需要的。

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

编辑:

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

只有一个数组 $arr1,里面有多个数组,如何合并它们? - Osa
2
如果$arr1中有超过两个元素怎么办? - John Dvorak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接