1 “+”:

直接将两个数组的值合并成为一个数组;

$a = [1,2,3,'a'=>'a'];
$b = ['a'=>'b',4,5,'b'=>'c',6,7,'a'];
$c = $a + $b;print_r($a);
print_r($b);
print_r($c);//$a
Array
([0] => 1[1] => 2[2] => 3[a] => a
)//$b
Array
([a] => b[0] => 4[1] => 5[b] => c[2] => 6[3] => 7[4] => a
)//$c
Array
([0] => 1[1] => 2[2] => 3[a] => a[b] => c[3] => 7[4] => a
)

采用"+"合并数组,如果键相同的情况下,前面的数组值会覆盖掉后面的数组值。

2 “array_push”:

将某个变量放入到另一个数组当中

$a = [1,'a'=>'aa',2,'b'=>'bb'];
$b = [1,'a'=>'aa',2,'b'=>'bb'];
print_r($a);
print_r($b);
array_push($a, $b);
print_r($a);//$a
Array
([0] => 1[a] => aa[1] => 2[b] => bb
)//$b
Array
([0] => 1[a] => aa[1] => 2[b] => bb
)// array_push过后的$a
Array
([0] => 1[a] => aa[1] => 2[b] => bb[2] => Array([0] => 1[a] => aa[1] => 2[b] => bb))

通过打印的值可以看出,变量进入数组后,对应的数字索引必然是当前数组中最小的数字索引+1(如果当前数组不存在数字索引,新增元素对应的索引为0)

3 “array_merge”:

直接将两个数组进行合并,两个数组键相同的情况,后面数组的值覆盖前面数组的值

$a = [1,'2'=>2,'a'=>'a','b'=>'b'];
$b = [1,'2'=>3,'a'=>'c','b'=>'d','c'=>'e'];
$c = array_merge($a,$b);
print_r($a);
print_r($b);
print_r($c);//$a
Array
([0] => 1[2] => 2[a] => a[b] => b
)//$b
Array
([0] => 1[2] => 3[a] => c[b] => d[c] => e
)//$c
Array
([0] => 1[1] => 2[a] => c[b] => d[2] => 1[3] => 3[c] => e
)

可以看出,两个数组键相同的情况,后面数组的值覆盖前面数组的值。但是对于数字索引或者数字字符串索引,会按照顺序进行重置(第一个数组的第一个数字索引元素从0开始依次填充)

4 “array_merge_recursive”:

合并数组,遇到相同的键将该键中值合并为一个子数组

$a = [1,'2'=>2,'a'=>'a','b'=>'b'];
$b = [1,'2'=>3,'a'=>'a','b'=>'d','c'=>'e'];
$c = array_merge_recursive($a,$b);
print_r($a);
print_r($b);
print_r($c);//$a
Array
([0] => 1[2] => 2[a] => a[b] => b
)//$b
Array
([0] => 1[2] => 3[a] => a[b] => d[c] => e
)//$c
Array
([0] => 1[1] => 2[a] => Array([0] => a[1] => a)[b] => Array([0] => b[1] => d)[2] => 1[3] => 3[c] => e
)

采用"array_merge_recursive"方法时,会将相同键的元素,整合成为一个新的数组,保持键名不变,作为合并数组($a与$b组合后的数组)的一个子元素。但是对于数字索引或者数字字符串索引,会按照顺序进行重置(第一个数组的第一个数字索引元素从0开始依次填充)。即使对应的数字索引相同,也不会将相同索引的元素整合成功一个子数组。

PHP数组合并的几种方式相关推荐

  1. JavaScript数组合并的几种方式

    JavaScript用四种方式实现两个数组的合并 循环遍历(本例只用forEach和for...of) 扩展运算符 contact apply push()的定义和用法:push() 方法可向数组的末 ...

  2. JS数组遍历的几种方式

    JS数组遍历的几种方式 JS数组遍历,基本就是for,forin,foreach,forof,map等等一些方法,以下介绍几种本文分析用到的数组遍历方式以及进行性能分析对比 第一种:普通for循环 代 ...

  3. java中打印输出数组内容的三种方式

    今天输出数组遇到问题,学习一下打印输出数组内容的几种方式 错误示范:System.out.println(array); //这样输出的是数组的首地址,而不能打印出数组数据.(唉,我开始就是这么写的. ...

  4. C语言的二维数组初始化的几种方式介绍(私藏大数组初始化方式)

    C语言的二维数组初始化的几种方式介绍 1.直接赋值 2.循环对每个元素赋值 3.借用memset/memset_s初始化为0或-1 4.`数组所有元素初始化为相同值(用于大数组初始化贼方便)` 1.直 ...

  5. c语言关于数组输入的两种方式

    今天上课的时候老师有讲到数组输入有两种方式,一种是直接赋值输入进数组,第二种是利用地址赋给数组,下面是代码: 第一种:直接输入 void model(int *p)//(int p[]){for(i= ...

  6. java类初始数组_java中数组初始化的三种方式是什么

    java中数组初始化的三种方式是:1.静态初始化,如[int a[] = {2, 0, 1, 9, 2020}]:2.动态初始化,如[int[] c = new int[4]]:3.默认初始化,如[i ...

  7. 数组拼接html js,js数组合并的几种方法

    JS合并数组的几种方法及优劣比较 var datas = [ ['红色', '蓝色'], ['XL'], ['图片', '文字'] ]; 如何 将let datas = [[1, 2], [3,0,5 ...

  8. Java数组定义的三种方式

    Java数组定义的三种方式 第一种:先声明,分配空间,赋值 int[] arr; //先声明arr=new int[10]; //分配空间fo0(int i=0;i<10;i++){arr[i] ...

  9. 数组初始化的三种方式

    数组初始化的三种方式 动态初始化:数组定义与为数组分配空间和赋值的操作分开进行: 静态初始化:在定义数字的同时就为数组元素分配空间并赋值: 默认初始化:数组是引用类型,它的元素相当于类的成员变量,因此 ...

最新文章

  1. NeurIPS 2020 | Focal Loss改进版来了!GFocal Loss:良心技术,无Cost涨点!
  2. No module named ‘win32gui’ 以及 No module named ‘win32console’解决办法
  3. 2018.09.01 独立集(树形dp)
  4. PostgreSQL开放自由
  5. 最易忽视的肾虚4件事
  6. MyEclipse下连接Mysql
  7. featuretools,可自动构造机器学习特征的Python库
  8. android 绘制按钮,将背景可绘制的状态设置为android按钮
  9. 细胞亚器互作之细胞代谢调节液泡与线粒体的接触位Cellular Metabolism Regulates Contact Sites between Vacuoles and Mitochondria
  10. python类和对象详解_python面向对象编程:类和对象详解介绍 – Python高级开发教程...
  11. Ubuntu安装tftpd服务器
  12. 小米8装magisk
  13. 含泪整理最优质马壁纸素材,你想要的这里都有
  14. Vue项目实战:订单列表页面实现
  15. RDKit | 基于RDKit和SMARTS的化学反应处理
  16. 国产可视化引擎PIE-Earth助力实景三维中国建设
  17. 事务机制:Redis能实现ACID属性吗?
  18. Android开发k歌软件,安卓电视k歌软件哪个好?
  19. ACL20|MART: Memory-Augmented Recurrent Transformer for Coherent Video Paragraph Captioning
  20. ​五分钟扫盲:进程与线程基础必知

热门文章

  1. 电影《毒舌律师》观后感
  2. AI绘画Stable Diffusion实战操作: 62个咒语调教-时尚杂志封面
  3. GC是什么时候触发的(面试最常见的问题之一)
  4. jmockit教程_【原创】如何使用Jmockit进行单元测试
  5. java mkdir和mkdirs的区别
  6. 白名单/黑名单--名词解释
  7. 南邮数据库实验2:小型数据库设计
  8. KEIL MDK 提示“no browse info for symbol in this context”
  9. php开启swoole,swoole如何启动
  10. 神经网络实战记录11—调参技巧2—fine-tune(基于VGGNet tensorboard代码改)