PHP三种数组合并方式

  • 一、PHP数组基础
  • 二、三种数组合并方式
    • 相同数字键名
    • 相同字符串键

一、PHP数组基础

一、key

  1. key只能为integer或string,可同时存在;
  2. 包含合法整型值的字符串key会被转化为整型存储,如:‘7’的key会被转化为7存储;
  3. 布尔值key会被转化为整型存储,true会被转化为1存储,false会被转化为0存储;
  4. null会被转化为空串(‘’)存储;
  5. 如果多个key值被转化为相同的值,则只使用最后一个,前面的被覆盖,如:一个数组中依次定义了‘1’、true、1的key,则最后只会存储key为1的value,之前的值都会被覆盖掉;
  6. 如果未指定key,则会被自动设定为之前用过的最大的整型key+1,最小为0;

二、value

  1. 可以为PHP任意类型(字符串、整型、浮点型、布尔型、对象、数组、null、资源类型);

三、其他类型转化为数组类型

  1. integer、string、float、boolean、resource类型转化为数组类型时,会被自动分配key为0,value为其原值;
  2. object类型转化为数组类型时,成员变量名会作为数组key,私有属性的key会加上类名前缀,保护属性的key会加上‘*’前缀,成员变量的值作为value;
  3. null会被转化为空数组;

四、foreach

  1. 两种形式,foreach(arr as $key => $value)与foreach(arr as $value),其中value是值传递,使用&value是引用传递;
  2. 遍历依赖数组内部指针;
  3. 遍历结束后,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三种数组合并方式相关推荐

  1. 在PHP中数组有两种形式区别,PHP三种数组合并方式区别示例

    PHP三种数组合并方式区别示例 PHP数组合并方式主要有三种: 1.+操作符 2.array_merge() 3.array_merge_recursive() 它们的区别主要体现在对于相同键名(数字 ...

  2. HD2刷机的基础知识 HD2的radio、HSPL、ROM三种组合

    今天看着教程刚刷了台HD2,觉得有用的文章顺便转载过来 undefined   本文转自http://bbs.windbus.com/forum.php?mod=viewthread&tid= ...

  3. try块的三种组合方式

    try块的三种组合方式: 第一种: 比较适用于有异常要处理,但是没有资源要释放的.  try{ 可能发生异常的代码 }catch(捕获的异常类型 变量名){ 处理异常的代码 } 第二种:比较适用于既有 ...

  4. python数字组合算法_python - 简单算法题 - 求三位数组合

    求三位数组合 lst = [3, 6, 2, 7] 这四个数字能组成多少个互不相同且无重复数字的三位数?比如362算一个,326算一个,请逐个输出他们 思路分析 从4个数里面取3个数,且不重复,然后进 ...

  5. Verilog VHDL三种建模描述方式——2选1数据选择器

    标题Quartus II 标题 Verilog VHDL三种建模描述方式--2选1数据选择器 1,结构化描述方式: 是使用实例化低层次模块的方法,即调用其他已经定义过的低层次模块对整个电路的功能进行描 ...

  6. 了解mysql的三种不同安装方式的区别

    学习目的:了解mysql的三种不同安装方式的区别 学习内容: mysql 的安装有三种:分别是源码安装.二进制安装.rpm安装. 源码安装的优势:linux操作系统开放源代码,因此在其上面安装的软件大 ...

  7. 【组合数学】组合恒等式 ( 变上项求和 1 组合恒等式 | 三种组合恒等式证明方法总结 | 证明变上项求和 1 组合恒等式 )

    文章目录 一.组合恒等式 ( 变上项求和 1 ) 二.组合恒等式证明方法 ( 三种 ) 三.组合恒等式 ( 变上项求和 1 ) 证明 组合恒等式参考博客 : [组合数学]组合恒等式 ( 递推 组合恒等 ...

  8. lvs的调度算法有几种_LVS:三种负载均衡方式比较

    1.什么是LVS? 首先简单介绍一下LVS (Linux Virtual Server)到底是什么东西,其实它是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术.调度器具有很 ...

  9. 多角度对比数据中心常见的三种走线方式

    01 三种走线方式的施工图片 ▽下走线(地板下走线) ▽天花吊顶上走线 ▽机柜顶部走线 02 三种走线方式对比 通过上面的比较,毫无疑问,机柜顶部走线模式是最有优势的,给用户带来很多好处,包括维护方便 ...

最新文章

  1. golang mysql自动重连_rabbitmq消费者插入mysql数据并实现断线自动重连
  2. ajax注册表单用户名实时验证,Ajax注册表单用户名实时验证..doc
  3. js获取浏览器语言(ie、ff、chrome)、contextpath
  4. redis笔记_源码_双端链表list
  5. 超出文本隐藏并且显示省略号
  6. 服务器物理链路,【交换机在江湖对接案例】配置堆叠系统对接NLB服务器群集示例(通过物理链路环回方法)...
  7. VScode输出中文乱码的解决方法------测试过可以用
  8. Centos下面Eclipse打开文件闪退
  9. Makefile文件(一)_介绍
  10. 博士德霸道软件_霸道+远程版7.0
  11. 小芭比linux怎么装win7_超迷你的Linux系统--Puppy Linux(小芭比)
  12. 固态硬盘怎么看出厂日期_如何查看SSD可以使用多长时间?固态硬盘寿命测试方法(全文)...
  13. 智慧园区弱电系统集成建设方案
  14. 冒泡排序及一个小小的优化
  15. js修改服务器域名,春哥详解:业务域名 JS接口安全域名 网页授权域名
  16. [Linux命令] Cat是一只可爱的猫
  17. MTL多目标学习介绍综述等
  18. Kotlin高仿微信-第58篇-开通VIP
  19. 我对价值投资的思考(一)
  20. 2021年上海第一批高新技术企业上海熙有网络科技集团榜上有名

热门文章

  1. libgcc_a挖矿木马应急响应及分析
  2. Probe安装、配置以及监控
  3. 你真的会用OneNote吗?
  4. 计算机核心期刊新排名!
  5. 如何制作Win7 usb启动盘
  6. 双击扩展名为html的文件,HTML5 文件扩展名: 它是什么以及如何打开它?
  7. fabric里的marble私有数据访问案例
  8. QUI的开工 -- 打造一个简单实用的UI库 , 征集LOGO
  9. Array王锐大神力作:osg与PhysX结合系列内容——第0节 前言篇
  10. 后台管理系统模板 - zhadminvue