如何追加一个数组到另一个没有比较他们的键?
$a = array( 'a', 'b' );
$b = array( 'c', 'd' );
最后应该是:阵列([0]= > [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;
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有相同的键,它什么都不会做。
对于大数组,最好不使用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
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有相同的键,它什么都不会做。