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

作者:程序员零壹 时间:2023-05-25 12:02:48 

相信各位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)
}

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

第二种,使用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

标签:PHP,合并,数组
0
投稿

猜你喜欢

  • asp中的rs.open于conn.execute的区别

    2009-10-29 12:12:00
  • 如何写JS数组sort的比较函数

    2010-07-02 12:12:00
  • sql server 中删除默认约束的通用sql脚本

    2009-02-01 17:23:00
  • 多级联动下拉选择框,动态获取下一级

    2008-09-04 10:34:00
  • 基于display:table的CSS布局

    2008-10-30 10:38:00
  • SQL优化基础 使用索引(一个小例子)

    2012-01-29 18:29:26
  • Oracle 数据表分区的策略

    2010-07-21 13:30:00
  • 如何从SQL数据库中调用图片?

    2009-11-15 19:59:00
  • ASP中从数据库读取二进制文件数据代码

    2010-04-24 15:44:00
  • 如何用MySQL-Front远程连接MySql?

    2010-12-03 16:02:00
  • 有关Oracle数据库的备份情况

    2010-07-30 13:21:00
  • Access秘密技巧和陷阱

    2008-04-12 14:55:00
  • asp之让Session永不过期

    2011-04-15 10:42:00
  • Microsoft VBScript 运行时错误 错误 800a0005 无效的过程调用或参数: chr

    2011-03-09 11:03:00
  • OBJECTPROPERTY与sp_rename更改对象名称的介绍

    2012-01-29 18:04:39
  • Mysql入门系列:MYSQL日志文件维护

    2008-11-24 13:10:00
  • 如何远程连接SQL Server数据库

    2009-06-08 12:41:00
  • 打造“前端开发”程序员专用版EditPlus

    2009-01-05 13:04:00
  • CSS实例教程:复合型CSS条状图表(下)

    2010-01-23 12:52:00
  • js小方框中浏览大图类似google earth效果

    2007-10-28 19:30:00
  • asp之家 网络编程 m.aspxhome.com