欢迎访问宙启技术站
智能推送

PHP函数之array_merge(),用法详解

发布时间:2023-06-21 20:24:58

array_merge()是PHP中常用的一个数组函数,它可以用于将多个数组合并成一个数组。本文将对array_merge()的用法进行详细解析。

1. 语法

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

参数:

array1:必需,要合并的 个数组;

...:可选,要合并的其他数组,用逗号分隔。

返回值:

如果所有参数都是数组,则该函数将返回一个合并后的数组;

否则,将返回NULL并出现一个E_WARNING错误。

2. 示例

例1:合并两个数组

<?php

$a1=array("red","green");

$a2=array("blue","yellow");

print_r(array_merge($a1,$a2));

?>

结果:

Array ( [0] => red [1] => green [2] => blue [3] => yellow )

解析:将数组a2插入到数组a1的后面形成一个新的数组。

例2:将两个数组合并到一个字符串中

<?php

$arr1=array('a','b');

$arr2=array('c','d');

$str='';

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

foreach($arr as $k=>$v){

    $str.=$v.':';

}

echo $str;

?>

结果:a:b:c:d:

解析:将两个数组合并成一个数组,然后将数组中的所有元素拼接成一个字符串,并用冒号隔开。

例3:将多维数组合并成一个一维数组

<?php

$arr1=array('a'=>array('one'=>100,'two'=>200),'b'=>array('three'=>300,'four'=>400));

$arr2=array('c'=>array('five'=>500,'six'=>600),'d'=>array('seven'=>700,'eight'=>800));

$arr=array_merge_recursive($arr1,$arr2);

$res=array();

function getAll($arr){

    foreach($arr as $v){

        if(is_array($v)){

            getAll($v);

        }else{

            global $res;

            $res[]=$v;

        }

    }

}

getAll($arr);

print_r($res);

?>

结果:Array ( [0] => 100 [1] => 200 [2] => 300 [3] => 400 [4] => 500 [5] => 600 [6] => 700 [7] => 800 )

解析:先用array_merge()将多维数组合并成一个多维数组,然后再使用递归函数将多维数组转换成一维数组。

3. 注意事项

(1)如果合并的数组中存在相同的键,则后面的键值将覆盖前面的键值。例如:

<?php

$a1=array('a'=>1,'b'=>2,'c'=>3);

$a2=array('a'=>4,'d'=>5,'e'=>6,'b'=>7);

print_r(array_merge($a1,$a2));

?>

结果:

Array ( [a] => 4 [b] => 7 [c] => 3 [d] => 5 [e] => 6 )

(2)无论数组的键是数字还是字符串,它们都会被重新编号。

(3)如果一个数组的键是数字,则合并后的数组中仍然保留该键。

(4)如果多个数组具有相同的键,但是它们的值是数组,则这些数组将递归合并。

(5)如果数组中包含NULL,则该键将被忽略,并且在最终的合并数组中不会出现。