array_push()和array_merge()有什么区别?

7
我正在使用这两个函数array_push()array_merge()将这两个元素添加到一个新数组中。
    $a1 = array();
    $a2 = 'foo';
    echo '<pre>';
    print_r( array_merge($a1, (array)$a2) );
    echo '</pre>';

And with ..

    $a1 = array();
    $a2 = 'foo';
    array_push($a1, $a2);
    echo '<pre>';
    print_r($a1);
    echo '</pre>';

所有这些都是打印相同的东西...
Array
 (
    [0] => foo
 )

现在我的问题是这两个函数在基于功能上有什么主要区别。我是 PHP 的新手。

2
一个将两个数组合并成第三个数组的函数是 array_merge,而向现有数组添加新项的函数则是 array_push - RiggsFolly
3
array_merge和array+array有什么区别? - Sanjay Chaudhari
3
通过查看相关函数的PHP文档,这个问题很容易回答。 - GordonM
4个回答

9
你可以参考PHP手册,但现在我会这样解释它们的区别:

array_push()

把数组当作一个栈来处理,并将传递的变量推到数组的末尾。数组的长度增加了所推入的变量数。

例子

$stack = array("orange" , "banana");
array_push($stack, "1", "2");
print_r($stack);

上面的例子将输出:
Array
(
    [0] => orange
    [1] => banana
    [2] => 1
    [3] => 2
)

array_merge()

将一个或多个数组的元素合并在一起,使一个数组的值附加到前一个数组的末尾。它返回结果数组。如果输入数组具有相同的字符串键,则该键的后续值将覆盖先前的值。

然而,如果数组包含数字键,则后来的值不会覆盖原始值,而是被附加。具有数字键的输入数组中的值将在结果数组中以从零开始的递增键重新编号。

示例

$array1 = array("color" => "yellow" , 0, 1);
$array2 = array("a" , "b" , "color" => "blue" , "shape" => "rectangle", 1);
$result = array_merge($array1 , $array2);
print_r($result);

上面的例子将输出:
Array
(
    [color] => blue
    [0] => 0
    [1] => 1
    [2] => a
    [3] => b
    [shape] => rectangle
    [4] => 1
)

3

array_push()函数将每个参数添加到数组中:

array_push($array1, $array2);  
//is the same as  
$array1[] = $array2;

这将创建一个多维数组,我认为这不是你想要的。array_merge()函数只是将它们放在一起组成一个大数组,我认为这是你想要的。如果要使用array_push()函数实现相同的效果,你需要这样做:

//assuming $array2 has 4 elements 
array_push($array1, $array2[0], $array2[1], $array2[2], $array2[3]); 
//is the same as 
$array1 = array_merge($array1, $array2); 
//is the same as 
$array1[] = $array2[0]; 
$array1[] = $array2[1]; 
$array1[] = $array2[2]; 
$array1[] = $array2[3];

2

1

array_push — 将一个或多个元素推入数组的末尾。它不会使用两个不同的数组,只有一个数组,在array_merge中,我们有两个不同的数组,将它们合并成一个数组。

<?php
$stack = array("foo", "bar");
array_push($stack, "bar2", "foo2");
print_r($stack);
?>

输出将是:
Array
(
    [0] => foo
    [1] => bar
    [2] => bar2
    [3] => foo2
)

当使用array_merge时,可以将两个不同的数组合并。
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);

输出将为
Array
(
    [color] => green
    [0] => 2
    [1] => 4
    [2] => a
    [3] => b
    [shape] => trapezoid
    [4] => 4
)

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