PHP数组合并的几种方式
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数组合并的几种方式相关推荐
- JavaScript数组合并的几种方式
JavaScript用四种方式实现两个数组的合并 循环遍历(本例只用forEach和for...of) 扩展运算符 contact apply push()的定义和用法:push() 方法可向数组的末 ...
- JS数组遍历的几种方式
JS数组遍历的几种方式 JS数组遍历,基本就是for,forin,foreach,forof,map等等一些方法,以下介绍几种本文分析用到的数组遍历方式以及进行性能分析对比 第一种:普通for循环 代 ...
- java中打印输出数组内容的三种方式
今天输出数组遇到问题,学习一下打印输出数组内容的几种方式 错误示范:System.out.println(array); //这样输出的是数组的首地址,而不能打印出数组数据.(唉,我开始就是这么写的. ...
- C语言的二维数组初始化的几种方式介绍(私藏大数组初始化方式)
C语言的二维数组初始化的几种方式介绍 1.直接赋值 2.循环对每个元素赋值 3.借用memset/memset_s初始化为0或-1 4.`数组所有元素初始化为相同值(用于大数组初始化贼方便)` 1.直 ...
- c语言关于数组输入的两种方式
今天上课的时候老师有讲到数组输入有两种方式,一种是直接赋值输入进数组,第二种是利用地址赋给数组,下面是代码: 第一种:直接输入 void model(int *p)//(int p[]){for(i= ...
- java类初始数组_java中数组初始化的三种方式是什么
java中数组初始化的三种方式是:1.静态初始化,如[int a[] = {2, 0, 1, 9, 2020}]:2.动态初始化,如[int[] c = new int[4]]:3.默认初始化,如[i ...
- 数组拼接html js,js数组合并的几种方法
JS合并数组的几种方法及优劣比较 var datas = [ ['红色', '蓝色'], ['XL'], ['图片', '文字'] ]; 如何 将let datas = [[1, 2], [3,0,5 ...
- Java数组定义的三种方式
Java数组定义的三种方式 第一种:先声明,分配空间,赋值 int[] arr; //先声明arr=new int[10]; //分配空间fo0(int i=0;i<10;i++){arr[i] ...
- 数组初始化的三种方式
数组初始化的三种方式 动态初始化:数组定义与为数组分配空间和赋值的操作分开进行: 静态初始化:在定义数字的同时就为数组元素分配空间并赋值: 默认初始化:数组是引用类型,它的元素相当于类的成员变量,因此 ...
最新文章
- NeurIPS 2020 | Focal Loss改进版来了!GFocal Loss:良心技术,无Cost涨点!
- No module named ‘win32gui’ 以及 No module named ‘win32console’解决办法
- 2018.09.01 独立集(树形dp)
- PostgreSQL开放自由
- 最易忽视的肾虚4件事
- MyEclipse下连接Mysql
- featuretools,可自动构造机器学习特征的Python库
- android 绘制按钮,将背景可绘制的状态设置为android按钮
- 细胞亚器互作之细胞代谢调节液泡与线粒体的接触位Cellular Metabolism Regulates Contact Sites between Vacuoles and Mitochondria
- python类和对象详解_python面向对象编程:类和对象详解介绍 – Python高级开发教程...
- Ubuntu安装tftpd服务器
- 小米8装magisk
- 含泪整理最优质马壁纸素材,你想要的这里都有
- Vue项目实战:订单列表页面实现
- RDKit | 基于RDKit和SMARTS的化学反应处理
- 国产可视化引擎PIE-Earth助力实景三维中国建设
- 事务机制:Redis能实现ACID属性吗?
- Android开发k歌软件,安卓电视k歌软件哪个好?
- ACL20|MART: Memory-Augmented Recurrent Transformer for Coherent Video Paragraph Captioning
- ​五分钟扫盲:进程与线程基础必知
热门文章
- 电影《毒舌律师》观后感
- AI绘画Stable Diffusion实战操作: 62个咒语调教-时尚杂志封面
- GC是什么时候触发的(面试最常见的问题之一)
- jmockit教程_【原创】如何使用Jmockit进行单元测试
- java mkdir和mkdirs的区别
- 白名单/黑名单--名词解释
- 南邮数据库实验2:小型数据库设计
- KEIL MDK 提示“no browse info for symbol in this context”
- php开启swoole,swoole如何启动
- 神经网络实战记录11—调参技巧2—fine-tune(基于VGGNet tensorboard代码改)