如何将阵列与另一个阵列相结合
我有两个数组array1和array2,我想将array2的所有元素添加到array1的末尾。 array1包含很多项目。如何将阵列与另一个阵列相结合
的关键是数字,我不希望这句法:
array1 = array1 + array2
或
array1 = SomeArrayFun(array1,array2)
由于它带走CPU时间(如创建两次阵列)
什么我想要的是:
array1 . SomeAddFun(array2); // This will not create any new arrays
有没有办法做到这一点?
如果您想将数据追加到现有数组中,您应该选择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
)
这就是我想要的。谢谢。 – user774250 2011-12-21 17:47:22
@ user774250如果您对答案满意,请不要忘记将答案标记为已接受。 – 2011-12-21 17:53:47
实际上,即使你没有看到它,但['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
您可以使用ArrayObject
与append
功能:
$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,因为它们似乎被附加为“子阵列”而不是整体的一部分。
或在“普通”数组上使用['array_push'](http://php.net/manual/en/function.array-push.php)。 – 2011-12-21 17:44:28
推送一个数组将会添加一个带有索引的整个数组,并且不会合并它的元素 – user774250 2011-12-21 17:53:09
@ user774250,之后我才注意到它,这就是为什么我在答案的底部添加了文本。我离开了我的答案,因为它仍然是一种将内容追加到数组的方式,可能是其他人有用的信息。 – 2011-12-21 17:56:54
'作为它带走CPU时间(如创建两次阵列)'。这是微不足道的,你根本不会注意到任何差异。 – 2011-12-21 17:40:40
这是一个拥有数千条记录的交通繁忙网站 – user774250 2011-12-21 17:42:07
看看这篇文章基准测试数组函数:http://stackoverflow.com/a/2484455 – 2011-12-21 17:46:38