PHP中合并数组的常见方法分享

相信各位phper在日常开发中,会经常遇到需要合并数组的场景。那么,在php中都有哪一些方法可以用来合并数组呢。

第一种,使用“+”运算符

使用加号“+”运算符,可以直接将两个数组合并成一个数组。

示例代码:

<?php
$a = [1,2,3,'a'=>'a'];
$b = ['a'=>'aa','b'=>'bb',4,5,6,7,'c'=>'cc',8];
$c = $a + $b;
var_dump($a);
var_dump($b);
var_dump($c);

输出结果:

// $a

array(4) {

[0]=>

int(1)

[1]=>

int(2)

[2]=>

int(3)

["a"]=>

string(2) "a"

}

// $b

array(8) {

["a"]=>

string(2) "aa"

["b"]=>

string(2) "bb"

[0]=>

int(4)

[1]=>

int(5)

[2]=>

int(6)

[3]=>

int(7)

["c"]=>

string(2) "cc"

[4]=>

int(8)

}

// $c

array(8) {

[0]=>

int(1)

[1]=>

int(2)

[2]=>

int(3)

["a"]=>

string(2) "a"

["b"]=>

string(2) "bb"

[3]=>

int(7)

["c"]=>

string(2) "cc"

[4]=>

int(8)

}

注意:使用加号“+”运算符进行数组合并,两个数组元素键相同的情况下,前面的元素会覆盖后面的元素。

第二种,使用array_merge()函数

用法:array_merge(array1,array2,array3...)

array_merge()函数用于将一个或者多个数组合并成一个数组。

如果两个或者多个数组元素有相同的键名,则最后的元素会覆盖其他元素。

示例代码:

<?php
$a = [1,2,3,'a'=>'a'];
$b = ['a'=>'aa','b'=>'bb',4,5,6,7,'c'=>'cc',8];
$c = array_merge($a,$b);
$d = [];
$e = array_merge($a,$d);
$f = array_merge($d,$b);
$g = array_merge([],[]);
var_dump($a);
var_dump($b);
var_dump($c);
var_dump($e);
var_dump($f);
var_dump($g);

输出结果:

// $a

array(4) {

[0]=>

int(1)

[1]=>

int(2)

[2]=>

int(3)

["a"]=>

string(1) "a"

}

// $b

array(8) {

["a"]=>

string(2) "aa"

["b"]=>

string(2) "bb"

[0]=>

int(4)

[1]=>

int(5)

[2]=>

int(6)

[3]=>

int(7)

["c"]=>

string(2) "cc"

[4]=>

int(8)

}

// $c

array(11) {

[0]=>

int(1)

[1]=>

int(2)

[2]=>

int(3)

["a"]=>

string(2) "aa"

["b"]=>

string(2) "bb"

[3]=>

int(4)

[4]=>

int(5)

[5]=>

int(6)

[6]=>

int(7)

["c"]=>

string(2) "cc"

[7]=>

int(8)

}

// $e

array(4) {

[0]=>

int(1)

[1]=>

int(2)

[2]=>

int(3)

["a"]=>

string(1) "a"

}

// $f

array(8) {

["a"]=>

string(2) "aa"

["b"]=>

string(2) "bb"

[0]=>

int(4)

[1]=>

int(5)

[2]=>

int(6)

[3]=>

int(7)

["c"]=>

string(2) "cc"

[4]=>

int(8)

}

// $g

array(0) {

}

注意:两个数组的元素键相同的情况下,后面的元素会覆盖前面的元素。但如果数组的索引是数字索引或者数字字符串索引,合并后的数组的数字索引会按照顺序重置,从第一个数组的第一个数字索引元素从0开始依次填充。

第三种,使用array_merge_recursive()函数

用法:array_merge_recursive(array1,array2,array3...)

array_merge_recursive()函数用于将一个或者多个数组合并成一个数组。

示例代码:

<?php
$a = [1,2,3,'a'=>'a'];
$b = ['a'=>'aa','b'=>'bb',4,5,6,7,'c'=>'cc',8];
$c = array_merge_recursive($a,$b);
var_dump($a);
var_dump($b);
var_dump($c);

输出结果:

// $a

array(4) {

[0]=>

int(1)

[1]=>

int(2)

[2]=>

int(3)

["a"]=>

string(1) "a"

}

// $b

array(8) {

["a"]=>

string(2) "aa"

["b"]=>

string(2) "bb"

[0]=>

int(4)

[1]=>

int(5)

[2]=>

int(6)

[3]=>

int(7)

["c"]=>

string(2) "cc"

[4]=>

int(8)

}

// $c

array(11) {

[0]=>

int(1)

[1]=>

int(2)

[2]=>

int(3)

["a"]=>

array(2) {

[0]=>

string(1) "a"

[1]=>

string(2) "aa"

}

["b"]=>

string(2) "bb"

[3]=>

int(4)

[4]=>

int(5)

[5]=>

int(6)

[6]=>

int(7)

["c"]=>

string(2) "cc"

[7]=>

int(8)

}

注意:如果遇到两个或者多个数组的元素的键相同,array_merge_recursive()不会进行键名覆盖,而是将多个相同键名递归组成一个数组。如果数组的索引是数字索引或者数字字符串索引,合并后的数组的数字索引会按照顺序重置,从第一个数组的第一个数字索引元素从0开始依次填充。

第四种,使用array_combine()函数

用法:array_combine(keys,values)

array_combine()函数,通过合并两个数组来创建一个新的数组,其中一个数组元素为键名,另外一个数组的元素为键值。

示例代码:

<?php
$a = [1,2,3];
$b = ['a','b','c'];
$c = array_combine($a,$b);
$d = array_combine($b,$a);
var_dump($c);
var_dump($d);

输出结果:

// $c

array(3) {

[1]=>

string(1) "a"

[2]=>

string(1) "b"

[3]=>

string(1) "c"

}

// $d

array(3) {

["a"]=>

int(1)

["b"]=>

int(2)

["c"]=>

int(3)

}

注意:键名数组和键值数组的元素个数必须相同!

原文地址:https://blog.csdn.net/u010594957/article/details/127861134