PHP中array_merge和array+array的区别
时间:2019-04-16
本文章向大家介绍PHP中array_merge和array+array的区别,主要包括PHP中array_merge和array+array的区别使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在PHP中可以使用array_merge函数和两个数组相加array+array的方式进行数组合并,但两者效果并不相同,区别如下:
- 当下标为数值时,array_merge()不会覆盖掉原来的值,但array+array合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(不是覆盖).
- 注意区别 array_merge_recursive函数
- 当下标为字符时,array+array 把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉,但array_merge()此时会覆盖掉前面相同键名的值.
演示案例:
<?php echo "<pre>"; /* ***************** * 如果key是字符串 * ***************** */ $arr1 = [ 'name' => 'zhangsan', 'age' => '28', ]; $arr2 = [ 'name' => 'lisi', 'age' => '17', ]; //如果键名为字符,且键名相同,array_merge()最后面的元素值会覆盖前面的元素值 print_r(array_merge($arr1, $arr2)); /* Array ( [name] => lisi [age] => 17 ) */ //PHP中还有一个函数:array_merge_recursive //递归地合并一个或多个数组,如果输入的数组中有相同的字符串键名,则这些值会被合并到一个数组中去 print_r(array_merge_recursive($arr1, $arr2)); /* Array ( [name] => Array ( [0] => zhangsan [1] => lisi ) [age] => Array ( [0] => 28 [1] => 17 ) ) */ //如果键名为字符,且键名相同,两个数组相加会将最先出现的元素值作为结果 print_r($arr1 + $arr2); /* Array ( [name] => zhangsan [age] => 28 ) */ //两个数组的key的个数不相同 $arr1 = [ 'name' => 'zhangsan', 'age' => '28', ]; $arr2 = [ 'name' => 'lisi', 'age' => '17', 'sex' => 'nan', ]; print_r(array_merge($arr1, $arr2)); /* Array ( [name] => lisi [age] => 17 [sex] => nan ) */ print_r($arr1 + $arr2); /* Array ( [name] => zhangsan [age] => 28 [sex] => nan ) */ echo "<hr>"; /* *************** * 如果key是数字 * *************** */ $arr1 = ['zhangsan','28']; $arr2 = ['lisi','17']; //如果键名为数字,array_merge()不会进行覆盖,但是会覆盖掉前面相同键值 print_r(array_merge($arr1,$arr2)); /* Array ( [0] => zhangsan [1] => 28 [2] => lisi [3] => 17 ) */ //如果键名为数字,数组相加会将最先出现的值作为结果,后面键名相同的会被抛弃 print_r($arr1+$arr2); /* Array ( [0] => zhangsan [1] => 28 ) */ //再比如 $arr1 = [3=>'zhangsan',9=>'28']; $arr2 = [3=>'lisi',9=>'17',12=>'nan']; //array_merge()会覆盖掉前面相同键值,重新从0开始进行键排序 print_r(array_merge($arr1,$arr2)); /* Array ( [0] => zhangsan [1] => 28 [2] => lisi [3] => 17 [4] => nan ) */ //数组相加 不会对键进行重新排序 print_r($arr1+$arr2); /* Array ( [3] => zhangsan [9] => 28 [12] => nan ) */
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- Android中使用SharedPreferences完成记住账号密码的功能
- Android Intent封装的实例详解
- Android自定义Drawable实现圆角效果
- Android ApplicationInfo 应用程序信息的详解
- Android UI控件Switch的使用方法
- Android如何读写CSV文件方法示例
- Android 静默安装和卸载的方法
- Android自定义单例AlertDialog详解
- Android Build类的详解及简单实例
- Android使用CrashHandler来获取应用的crash信息的方法
- 数据魔术师小白零基础实现简单人脸识别
- Android编程实现XML解析与保存的三种方法详解
- 浅谈关于Android路由的实现
- Android中EditText禁止输入表情的实例代码
- Android仿微信右滑返回功能的实例代码