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

PHP函数之array_merge:合并多个数组为一个数组。

发布时间:2023-06-05 13:48:52

PHP函数库中的array_merge函数是一个通用的数组合并函数,可以将多个数组合并成一个数组。array_merge函数的一般用法是将多个数组作为参数传递给它,返回一个包含所有数组元素的新数组。此函数还有很多附加功能,例如可以合并多维数组或键值对数组、删除重复元素等。下面我们来详细了解array_merge函数。

一、array_merge函数的基本用法

array_merge函数的基本用法非常简单。它可以接受任意数量的数组参数,并返回一个新数组,该新数组包含所有原始数组的元素。其基本语法如下:

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

在上面的语句中,array1是必须的参数,其他数组是可选的。通过在array_merge函数中传递两个或更多数组,可以将它们组合成单个数组。这个新数组将包含原始数组中所有的元素以及关联的键(如果有的话)。例如,考虑以下代码:

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

$arr2 = array('d', 'e', 'f');

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

上面的代码中,我们将两个数组$arr1和$arr2组合成一个数组,$result。最终结果是:

Array

(

    [0] => a

    [1] => b

    [2] => c

    [3] => d

    [4] => e

    [5] => f

)

通过array_merge函数将两个数组组合成一个数组,新生成的数组以 个数组(即$arr1)的键重新编号。这也意味着,如果 个数组中有重复的键,那么后续的数组中同样的键将会忽略。例如,以下代码

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

$arr2 = array('a', 'd', 'e');

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

返回结果是:

Array

(

    [0] => a

    [1] => b

    [2] => c

    [3] => a

    [4] => d

    [5] => e

)

从结果来看,两个数组中的键"a"都被保留了下来,但后面一个$a被当成一般的值加入到了数组中。

二、array_merge合并多维数组

除了可以合并一维数组外,array_merge函数还可以合并多维数组。如果要将多个多维数组组合成一个数组,可以使用以下代码:

$array1 = array('a', 'b', 'c');

$array2 = array('d', 'e', 'f');

$array3 = array('g', 'h', 'i');

$multi_array = array($array1, $array2, $array3);

$result = call_user_func_array('array_merge', $multi_array);

执行后,结果如下:

Array

(

    [0] => a

    [1] => b

    [2] => c

    [3] => d

    [4] => e

    [5] => f

    [6] => g

    [7] => h

    [8] => i

)

三、array_merge合并关联数组

同样,array_merge函数也可以合并关联数组,只要键不冲突即可。例如,

$arr1 = array('a' => 'apple', 'b' => 'banana');

$arr2 = array('c' => 'cherry', 'd' => 'date');

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

返回的结果如下:

Array

(

    [a] => apple

    [b] => banana

    [c] => cherry

    [d] => date

)

可以看到,两个关联数组中的元素通过array_merge函数合并后,键都被保留。如果不同的数组中存在相同的键,则后面的数组元素会覆盖先前的元素。

调用array_merge时,先出现的数组元素优先级更高。例如,如果有一个数组元素的键值对在多个数组中出现,则 个出现的键值对的数据会保留。例如,

$arr1 = array('name' => 'John', 'age' => 30);

$arr2 = array('name' => 'Mike', 'gender' => 'male');

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

返回结果:

Array

(

    [name] => John

    [age] => 30

    [gender] => male

)

四、array_merge_recursive函数

array_merge_recursive函数与array_merge函数非常相似,但它可以合并多维数组。该函数的语法如下:

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

这个函数与array_merge函数的工作方式类似,但它递归地将多维数组合并成一个单一的数组。因此,它可以合并包含大量数据的复杂数据结构。例如,

$array1 = array('a' => 'apple', 'b' => 'banana');

$array2 = array('a' => 'apricot', 'c' => 'cherry');

$result = array_merge_recursive($array1, $array2);

执行后返回的结果是:

Array

(

    [a] => Array

        (

            [0] => apple

            [1] => apricot

        )

    [b] => banana

    [c] => cherry

)

可以看到,由于数组中的键a相同,这两个数组被合并成了单一的数组。结果中包含了两个键值对,每个键都有两个值。键值对“a”是一个数组,包含来自两个原始数组的值“apple”和“apricot”。

总结

array_merge函数是一个强大的功能,允许将多个数组合并成一个数组。当数据量较大时,可以使用该函数来方便地组合数组。此函数可以用于合并一维或多维数组,也可以用于合并关联数组。但要注意的是,如果不同的数组中存在相同的键,则来自后面数组的元素会覆盖先前数组中相同键的元素。在使用array_merge函数时,需要注意键的 性,否则会导致数据错误。