PHP三种数组合并方式
PHP三种数组合并方式
- 一、PHP数组基础
- 二、三种数组合并方式
- 相同数字键名
- 相同字符串键
一、PHP数组基础
一、key
- key只能为integer或string,可同时存在;
- 包含合法整型值的字符串key会被转化为整型存储,如:‘7’的key会被转化为7存储;
- 布尔值key会被转化为整型存储,true会被转化为1存储,false会被转化为0存储;
- null会被转化为空串(‘’)存储;
- 如果多个key值被转化为相同的值,则只使用最后一个,前面的被覆盖,如:一个数组中依次定义了‘1’、true、1的key,则最后只会存储key为1的value,之前的值都会被覆盖掉;
- 如果未指定key,则会被自动设定为之前用过的最大的整型key+1,最小为0;
二、value
- 可以为PHP任意类型(字符串、整型、浮点型、布尔型、对象、数组、null、资源类型);
三、其他类型转化为数组类型
- integer、string、float、boolean、resource类型转化为数组类型时,会被自动分配key为0,value为其原值;
- object类型转化为数组类型时,成员变量名会作为数组key,私有属性的key会加上类名前缀,保护属性的key会加上‘*’前缀,成员变量的值作为value;
- null会被转化为空数组;
四、foreach
- 两种形式,foreach(arr as $key => $value)与foreach(arr as $value),其中value是值传递,使用&value是引用传递;
- 遍历依赖数组内部指针;
- 遍历结束后,value会被保留(在遍历外能够获取到最后value的值),为防止在多次foreach时出现问题,可以在一次foreach后unset($value)或使用不同的变量;
二、三种数组合并方式
目前工作中接触到的PHP数组合并方式主要有三种:
1、+操作符;
2、array_merge();
3、array_merge_recursive();
它们的区别主要体现在对于相关键名(数字键名、字符串键名)的处理方式,下面以两个实际例子来提现:
相同数字键名
<?php$arrFirst = [111 => "first",222 => "first","first" //会指定默认的数字键223
];$arrSecond = [111 => "second",333 => "second","second" //会指定默认的数字键334
];//对于重复的数字键,+操作后,前面数组的键值会覆盖后面的,保留之前数字键
var_dump("array + result:", $arrFirst + $arrSecond);//对于重复的数字键,array_merge后,重排数字键(字符串键不变),不会覆盖
var_dump("array_merge result:", array_merge($arrFirst, $arrSecond));//对于重复的数字键,array_merge_recursive后,重排数字键(字符串键不变),不会覆盖
var_dump("array_merge_recursive result:", array_merge_recursive($arrFirst, $arrSecond));?>
运行结果:
相同字符串键
<?php$arrFirst = ["first_key" => 1,"second_key" => 1,"third_key" => 1,
];$arrSecond = ["first_key" => 2,"second_key" => 2,"fourth_key" => 2,
];//对于重复的字符串键,+操作后,前面数组的键值会覆盖后面的
var_dump("array + result:", $arrFirst + $arrSecond);//对于重复的字符串键,array_merge后,后面数组的键值会覆盖前面的
var_dump("array_merge result:", array_merge($arrFirst, $arrSecond));//对于重复的字符串键,array_merge_recursive后,相同键名的键值会被合并到同一数组中(会递归)
var_dump("array_merge_recursive result:", array_merge_recursive($arrFirst, $arrSecond));?>
运行结果:
PHP三种数组合并方式相关推荐
- 在PHP中数组有两种形式区别,PHP三种数组合并方式区别示例
PHP三种数组合并方式区别示例 PHP数组合并方式主要有三种: 1.+操作符 2.array_merge() 3.array_merge_recursive() 它们的区别主要体现在对于相同键名(数字 ...
- HD2刷机的基础知识 HD2的radio、HSPL、ROM三种组合
今天看着教程刚刷了台HD2,觉得有用的文章顺便转载过来 undefined 本文转自http://bbs.windbus.com/forum.php?mod=viewthread&tid= ...
- try块的三种组合方式
try块的三种组合方式: 第一种: 比较适用于有异常要处理,但是没有资源要释放的. try{ 可能发生异常的代码 }catch(捕获的异常类型 变量名){ 处理异常的代码 } 第二种:比较适用于既有 ...
- python数字组合算法_python - 简单算法题 - 求三位数组合
求三位数组合 lst = [3, 6, 2, 7] 这四个数字能组成多少个互不相同且无重复数字的三位数?比如362算一个,326算一个,请逐个输出他们 思路分析 从4个数里面取3个数,且不重复,然后进 ...
- Verilog VHDL三种建模描述方式——2选1数据选择器
标题Quartus II 标题 Verilog VHDL三种建模描述方式--2选1数据选择器 1,结构化描述方式: 是使用实例化低层次模块的方法,即调用其他已经定义过的低层次模块对整个电路的功能进行描 ...
- 了解mysql的三种不同安装方式的区别
学习目的:了解mysql的三种不同安装方式的区别 学习内容: mysql 的安装有三种:分别是源码安装.二进制安装.rpm安装. 源码安装的优势:linux操作系统开放源代码,因此在其上面安装的软件大 ...
- 【组合数学】组合恒等式 ( 变上项求和 1 组合恒等式 | 三种组合恒等式证明方法总结 | 证明变上项求和 1 组合恒等式 )
文章目录 一.组合恒等式 ( 变上项求和 1 ) 二.组合恒等式证明方法 ( 三种 ) 三.组合恒等式 ( 变上项求和 1 ) 证明 组合恒等式参考博客 : [组合数学]组合恒等式 ( 递推 组合恒等 ...
- lvs的调度算法有几种_LVS:三种负载均衡方式比较
1.什么是LVS? 首先简单介绍一下LVS (Linux Virtual Server)到底是什么东西,其实它是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术.调度器具有很 ...
- 多角度对比数据中心常见的三种走线方式
01 三种走线方式的施工图片 ▽下走线(地板下走线) ▽天花吊顶上走线 ▽机柜顶部走线 02 三种走线方式对比 通过上面的比较,毫无疑问,机柜顶部走线模式是最有优势的,给用户带来很多好处,包括维护方便 ...
最新文章
- golang mysql自动重连_rabbitmq消费者插入mysql数据并实现断线自动重连
- ajax注册表单用户名实时验证,Ajax注册表单用户名实时验证..doc
- js获取浏览器语言(ie、ff、chrome)、contextpath
- redis笔记_源码_双端链表list
- 超出文本隐藏并且显示省略号
- 服务器物理链路,【交换机在江湖对接案例】配置堆叠系统对接NLB服务器群集示例(通过物理链路环回方法)...
- VScode输出中文乱码的解决方法------测试过可以用
- Centos下面Eclipse打开文件闪退
- Makefile文件(一)_介绍
- 博士德霸道软件_霸道+远程版7.0
- 小芭比linux怎么装win7_超迷你的Linux系统--Puppy Linux(小芭比)
- 固态硬盘怎么看出厂日期_如何查看SSD可以使用多长时间?固态硬盘寿命测试方法(全文)...
- 智慧园区弱电系统集成建设方案
- 冒泡排序及一个小小的优化
- js修改服务器域名,春哥详解:业务域名 JS接口安全域名 网页授权域名
- [Linux命令] Cat是一只可爱的猫
- MTL多目标学习介绍综述等
- Kotlin高仿微信-第58篇-开通VIP
- 我对价值投资的思考(一)
- 2021年上海第一批高新技术企业上海熙有网络科技集团榜上有名