如何在不比较数组键的情况下将一个数组追加到另一个数组?
$a = array( 'a', 'b' );
$b = array( 'c', 'd' );
最后应该是:Array( [0]=>a [1]=>b [2]=>c [3]=>d )
如果我使用像[]
或array_push
这样的东西,它将导致以下结果之一:
Array( [0]=>a [1]=>b [2]=>Array( [0]=>c [1]=>d ) )
//or
Array( [0]=>c [1]=>d )
它应该是某种东西,这样做,但以一种更优雅的方式:
foreach ( $b AS $var )
$a[] = $var;
发布于 2010-11-25 00:16:04
array_merge
是一种优雅的方式:
$a = array('a', 'b');
$b = array('c', 'd');
$merge = array_merge($a, $b);
// $merge is now equals to array('a','b','c','d');
做一些类似的事情:
$merge = $a + $b;
// $merge now equals array('a','b')
将不起作用,因为+
运算符实际上并不合并它们。如果它们的$a
与$b
具有相同的密钥,它将不会执行任何操作。
发布于 2010-11-25 00:15:59
为什么不使用
$appended = array_merge($a,$b);
你为什么不使用这个,正确的,内置的方法。
发布于 2016-07-08 17:51:27
对于大型数组,最好不使用array_merge进行连接,以避免内存复制。
$array1 = array_fill(0,50000,'aa');
$array2 = array_fill(0,100,'bb');
// Test 1 (array_merge)
$start = microtime(true);
$r1 = array_merge($array1, $array2);
echo sprintf("Test 1: %.06f\n", microtime(true) - $start);
// Test2 (avoid copy)
$start = microtime(true);
foreach ($array2 as $v) {
$array1[] = $v;
}
echo sprintf("Test 2: %.06f\n", microtime(true) - $start);
// Test 1: 0.004963
// Test 2: 0.000038
https://stackoverflow.com/questions/4268871
复制相似问题