php array_merge 详解

来源:互联网 发布:java垃圾回收机制 编辑:程序博客网 时间:2024/06/09 23:25

php manual中的定义与说明:

reject note 说明

array array_merge ( array $array1 [, array $... ] )

array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。

如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。

如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引


要点分解:

1、数组中有相同的字符串键名,后面的值会覆盖前面一个值

比如:

$a=array('key'=>key1);

$b=array('key'=>key2);

$c=array_merge($a,$b);

var_dump($c);

输出:

array(1) {
  ["key"]=>
  string(4) "key2"
}

2、如果数组的键名是数字,后面的值将不会覆盖前面的值

比如:

$a=array(1=>key1);

$b=array(2=>key2);

$c=array_merge($a,$b);

var_dump($c);

输出:

array(2) {
  [0]=>
  string(4) "key1"
  [1]=>
  string(4) "key2"
}

3、如果只给了一个数组,则会对键名以连续的方式从0重新索引

比如:

$a=array(1=>1,2=>2);

$c=array_merge($a);

var_dump($c);

输出:

array(2) {
  [0]=>
  int(1)
  [1]=>
  int(2)
}

4、参数为null的时候

array_merge的参数为null的时候会报php-warning并且,返回null(PHP Warning:  array_merge(): Argument #2 is not an array)

这个时候我们就要清楚null和array(),的区别,我们可以给它一个空的数组,但是不能给一个null。你的期望可能是如果为null的时候就按空数组计算就行了,很可惜它没有这个功能.为了避免在程序中遇到null出现不可预知的错误,应该对值为null的变量赋值array()。

比如:

------------------------

$a=null;

$b=array(1,2);

array_merge($a,$b);//报错 返回null

--------------------

$a=array();

$b=array(1,2);

array_merge($a,$b);//正常 



原创粉丝点击