关于php:array_push()和array_merge()有什么区别?

What is the difference between array_push() and array_merge()?

我将使用这两个函数array_push()array_merge()将这两个元素添加到新的数组中。

1
2
3
4
5
    $a1 = array();
    $a2 = 'foo';
    echo '[cc lang="php"]';
    print_r( array_merge($a1, (array)$a2) );
    echo '

1
2
3
4
5
6
<P>还有……</P>[cc lang="php"]    $a1 = array();
    $a2 = 'foo';
    array_push($a1, $a2);
    echo '[cc lang="php"]';
    print_r($a1);
    echo '

1
2
3
4
<P>所有这些都在打印。</P>[cc lang="php"]Array
 (
    [0] => foo
 )

现在我的问题是,这两个功能在基于功能性方面的主要区别是什么。我是PHP新手,请帮帮我。


或者您可以参考PHP手册,但现在我将向您解释这种区别。

数组"push"()将数组视为堆栈,并推送将变量传递到数组末尾。这个数组长度增加了已推送变量。与以下效果相同:

例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$stack = array("orange" ,"banana" );
array_push
($stack ,"1" ,"2");
print_r ($stack );
?>
The above example will output:
Array
(
    [0] => orange
    [1] => banana
    [2] => 1
    [3] => 2
)

数组合并()将一个或多个数组的元素合并在一起使一个的值附加到上一个。它返回结果数组。如果输入数组具有相同的字符串键,则该键的后一个值将覆盖上一个。但是,如果数组包含数字键,以后的值不会覆盖原始值值,但将被附加。带有数字键的输入数组中的值将为用从零开始的递增键重新编号在结果数组中。例子

1
2
3
4
5
6
7
8
9
10
<?php
$array1 = array
("color" =>"yellow" , 0, 1);
$array2 = array
("a" ,"b" ,"color" =>"blue" ,"shape
"
=>"rectangle" , 1);
$result = array_merge
($array1 , $array2 );
print_r ($result );
?>

上面的示例将输出:

1
2
3
4
5
6
7
8
9
10
Array
(
    [color] => blue
    [0] => 0
    [1] => 1
    [2] => a
    [3] => b
    [shape] => rectangle
    [4] => 1
)

array_push-将一个或多个元素推到数组末尾

array_push()将数组视为堆栈,并将传递的变量推送到数组的末尾。数组的长度随着所推变量的数目而增加。

数组合并-合并一个或多个数组

将一个或多个数组的元素合并在一起,以便将一个数组的值附加到前一个数组的末尾。它返回结果数组。

1
2
3
4
5
6
7
8
9
10
11
    <?php
    $a1 = array('foo', 'bar');
    $a2 = 'foo';
    echo '<br />';
    print_r( array_merge($a1, (array)$a2) );
    $a1 = array('foo', 'bar');
    $a2 = 'foo';
    echo '<br />';
    array_push($a1, $a2);
    print_r($a1);
    ?>

根据性能数组,合并速度很慢。您应该阅读讨论。


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

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

这将创建一个多维数组,我认为这不是您想要的。数组合并只是把它们放在一起形成一个大数组,我想这就是你想要的。要获得与array_push()相同的效果,必须执行以下操作:

1
2
3
4
5
6
7
8
9
//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];


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

1
2
3
4
5
<?php
$stack = array("foo","bar");
array_push($stack,"bar2","foo2");
print_r($stack);
?>

前哨将是

1
2
3
4
5
6
7
Array
(
    [0] => foo
    [1] => bar
    [2] => bar2
    [3] => foo2
)

而数组将两个不同的数组组合在一起

1
2
3
4
$array1 = array("color" =>"red", 2, 4);
$array2 = array("a","b","color" =>"green","shape" =>"trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);

输出将为

1
2
3
4
5
6
7
8
9
10
Array
(
    [color] => green
    [0] => 2
    [1] => 4
    [2] => a
    [3] => b
    [shape] => trapezoid
    [4] => 4
)

数组push(&;$arr,$mixed[,$mixed]):int(元素数)

将一个或多个元素像堆栈一样推送到数组中。

所以。

1
2
$arr = ['1','2','3'];
array_push($arr, '4');

变成

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

数组合并($arr1,$arr2[,array$…]):数组

1
2
3
4
$arr1 = ['1','2','3'];
$arr2 = ['4','5','6'];

$arr3 = array_merge($arr1, $arr2);

注意第三个数组。

变成

1
2
3
4
5
6
7
8
9
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
)

两个函数都可以接受多个参数。