搜索

查看: 3108|回复: 11

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

[复制链接]
发表于 2023-5-4 17:04:45 | 显示全部楼层 |阅读模式
Editor 2023-5-4 17:04:45 3108 11 看全部
相信各位phper在日常开发中,会经常遇到需要合并数组的场景。那么,在php中都有哪一些方法可以用来合并数组呢。
第一种,使用“+”运算符
使用加号“+”运算符,可以直接将两个数组合并成一个数组。
示例代码:
'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()函数用于将一个或者多个数组合并成一个数组。
如果两个或者多个数组元素有相同的键名,则最后的元素会覆盖其他元素。
示例代码:
'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()函数用于将一个或者多个数组合并成一个数组。
示例代码:
'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()函数,通过合并两个数组来创建一个新的数组,其中一个数组元素为键名,另外一个数组的元素为键值。
示例代码:

输出结果:
// $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)
}

注意:键名数组和键值数组的元素个数必须相同!
到此这篇关于PHP中合并数组的常见方法分享的文章就介绍到这了,更多相关PHP合并数组内容请搜索知鸟论坛以前的文章或继续浏览下面的相关文章希望大家以后多多支持知鸟论坛
回复

使用道具 举报

发表于 2023-6-28 18:20:44 | 显示全部楼层
伊索谗言 2023-6-28 18:20:44 看全部
其实我一直觉得楼主的品味不错!呵呵!知鸟论坛太棒了!
回复

使用道具 举报

发表于 2023-6-29 00:05:35 | 显示全部楼层
塞翁364 2023-6-29 00:05:35 看全部
楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
回复

使用道具 举报

发表于 2023-6-29 00:10:36 | 显示全部楼层
123456809 2023-6-29 00:10:36 看全部
楼主太厉害了!楼主,I*老*虎*U!我觉得知鸟论坛真是个好地方!
回复

使用道具 举报

发表于 2023-6-29 22:06:29 | 显示全部楼层
掌舵的鱼1987 2023-6-29 22:06:29 看全部
这东西我收了!谢谢楼主!知鸟论坛真好!
回复

使用道具 举报

发表于 2023-6-30 13:00:06 | 显示全部楼层
123456825 2023-6-30 13:00:06 看全部
楼主,大恩不言谢了!知鸟论坛是最棒的!
回复

使用道具 举报

发表于 2023-7-3 11:17:10 | 显示全部楼层
啤酒瓶空了缓 2023-7-3 11:17:10 看全部
楼主,大恩不言谢了!知鸟论坛是最棒的!
回复

使用道具 举报

发表于 2023-7-3 17:37:11 | 显示全部楼层
冀苍鸾 2023-7-3 17:37:11 看全部
楼主太厉害了!楼主,I*老*虎*U!我觉得知鸟论坛真是个好地方!
回复

使用道具 举报

发表于 2023-7-3 18:19:34 | 显示全部楼层
当当当当裤裆坦 2023-7-3 18:19:34 看全部
楼主太厉害了!楼主,I*老*虎*U!我觉得知鸟论坛真是个好地方!
回复

使用道具 举报

发表于 2023-7-4 04:12:07 | 显示全部楼层
李志敏 2023-7-4 04:12:07 看全部
这东西我收了!谢谢楼主!知鸟论坛真好!
回复

使用道具 举报

  • 您可能感兴趣
点击右侧快捷回复 【请勿灌水】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 返回列表

RSS订阅| SiteMap| 小黑屋| 知鸟论坛
联系邮箱E-mail:zniao@foxmail.com
快速回复 返回顶部 返回列表