如何将阵列与另一个阵列相结合

如何将阵列与另一个阵列相结合

问题描述:

我有两个数组array1和array2,我想将array2的所有元素添加到array1的末尾。 array1包含很多项目。如何将阵列与另一个阵列相结合

的关键是数字,我不希望这句法:

array1 = array1 + array2 

array1 = SomeArrayFun(array1,array2) 

由于它带走CPU时间(如创建两次阵列)

什么我想要的是:

array1 . SomeAddFun(array2); // This will not create any new arrays 

有没有办法做到这一点?

+1

'作为它带走CPU时间(如创建两次阵列)'。这是微不足道的,你根本不会注意到任何差异。 – 2011-12-21 17:40:40

+0

这是一个拥有数千条记录的交通繁忙网站 – user774250 2011-12-21 17:42:07

+1

看看这篇文章基准测试数组函数:http://*.com/a/2484455 – 2011-12-21 17:46:38

如果您想将数据追加到现有数组中,您应该选择array_splice

通过适当的参数,您可以将$array2的内容插入/附加到$array1中,如下例所示。

$array1 = array (1,2,3); 
$array2 = array (4,5,6); 

array_splice ($array1, count ($array1), 0, $array2); 

print_r ($array1); 

输出:

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

这就是我想要的。谢谢。 – user774250 2011-12-21 17:47:22

+1

@ user774250如果您对答案满意,请不要忘记将答案标记为已接受。 – 2011-12-21 17:53:47

+0

实际上,即使你没有看到它,但['array_splice'](http://lxr.php.net/opengrok/xref/PHP_5_3/ext/standard/array.c#2067)正在创建第三个内部哈希表。我认为这只会改变一些东西,['array_merge'](http://lxr.php.net/opengrok/xref/PHP_5_3/ext/standard/array.c#2397)可能更快,因为它不会'没有这样复杂的功能逻辑。您实际上需要测试这两个参数中的哪一个在具体使用中更快。 – hakre 2011-12-21 17:54:45

您可以使用ArrayObjectappend功能:

$arrayobj = new ArrayObject(array('first','second','third')); 
$arrayobj->append('fourth'); 

结果:

object(ArrayObject)#1 (5) { 
    [0]=> 
    string(5) "first" 
    [1]=> 
    string(6) "second" 
    [2]=> 
    string(5) "third" 
    [3]=> 
    string(6) "fourth" 
} 

不知道是不是追加数组日ough,因为它们似乎被附加为“子阵列”而不是整体的一部分。

文档:http://www.php.net/manual/en/arrayobject.append.php

+0

或在“普通”数组上使用['array_push'](http://php.net/manual/en/function.array-push.php)。 – 2011-12-21 17:44:28

+0

推送一个数组将会添加一个带有索引的整个数组,并且不会合并它的元素 – user774250 2011-12-21 17:53:09

+0

@ user774250,之后我才注意到它,这就是为什么我在答案的底部添加了文本。我离开了我的答案,因为它仍然是一种将内容追加到数组的方式,可能是其他人有用的信息。 – 2011-12-21 17:56:54