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中array_merge和array+array的区别的更多相关文章
- PHP中array_merge函数与array+array的区别
在PHP中可以使用array_merge函数和两个数组相加array+array的方式进行数组合并,但两者效果并不相同,下面为大家介绍两者具体的使用区别. 区别如下: 当下标为数值时,array_me ...
- PHP中array_merge和array相加的区别分析
今天处理一个这样的问题:如何获取字符键名相同值不同的两个数组值集合,用array_merge和数组相加都不可行,让我认真比较了下PHP中array_merge和array相加的区别 首先来看看键名是s ...
- php 通过array_merge()和array+array合并数组的区别和效率比较
众所周知合并两个数组可以使用array_merge(),这是php提供的一个函数.另外还可以通过 array 的方式来合并数组,这两种直接有什么区别,哪一个的效率更高呢? array_merge() ...
- Java-杂项: Java中Array和ArrayList区别
ylbtech-Java-杂项: Java中Array和ArrayList区别 1.返回顶部 1. 1)精辟阐述:可以将 ArrayList想象成一种“会自动扩增容量的Array”. 2)Array( ...
- 解析C#中[],List,Array,ArrayList的区别及应用
[] 是针对特定类型.固定长度的. List 是针对特定类型.任意长度的. Array 是针对任意类型.固定长度的. ArrayList 是针对任意类型.任意长度的. Array 和 ArrayLis ...
- array_flip() array_merge() array+array的使用总结
array_flip(array); //传递一个数组参数,对该数组的键.值进行翻转 例如: $a = array( 'a', 'b', 'c' ); print_r(array_flip($a)); ...
- PHP array_flip() array_merge() array+array的使用总结
array_flip(array); //传递一个数组参数,对该数组的键.值进行翻转 例如: $a = array( 'a', 'b', 'c' ); print_r(array_flip($a)); ...
- C# 中的数组(array)
原文 C# 中的数组(array) 特性 数组是一个无序的元素序列.数组元素存储在一个连续性的内存块中,并可使用一个整数索引来访问. C# 声明数组变量时,数组的大小不是声明的一部分.这点与C/C++ ...
- php中foreach()函数与Array数组经典案例讲解
//php中foreach()函数与Array数组经典案例讲解 function getVal($v) { return $v; //可以加任意检查代码,列入要求$v必须是数字,或过滤非法字符串等.} ...
随机推荐
- 获取CPU序列号的Delphi程序
Unit CPUid; Interface Type TCpuType = (cpu8086, cpu286, cpu386, cpu486, cpuPentium); Function CpuTyp ...
- 安全工具-Sparta
Sparta是一个集端口扫描.网络扫描.服务探测以及暴力破解等多项功能于一身的工具,kali中已经预装了该工具,可直接使用. > 输入目标IP,开始扫描即可探测出开放的端口及服务 > 选中 ...
- 高性能前端 art-template 模板
官网: https://aui.github.io/art-template/zh-cn/index.html nodejs 服务器端使用 第一步: 引入 art-template 的包 npm in ...
- Intellij 高亮显示与选中字符串相同的内容
如下图所示,我的是 2018,不同版本,Schema 可能要 Save As一下
- 强化学习-Q-Learning算法
1. 前言 Q-Learning算法也是时序差分算法的一种,和我们前面介绍的SARAS不同的是,SARSA算法遵从了交互序列,根据当前的真实行动进行价值估计:Q-Learning算法没有遵循交互序列, ...
- Spark性能优化指南-高级篇
转自https://tech.meituan.com/spark-tuning-pro.html,感谢原作者的贡献 前言 继基础篇讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后,本文作 ...
- mac os下不同工具go env下gopath显示不同
设置 vim ~/.zshrc 设置 vim ~/.bash_profile
- 【RPC】手撸一个简单的RPC框架实现
涉及技术 序列化.Socket通信.Java动态代理技术,反射机制 角色 1.服务提供者:运行在服务端,是真实的服务实现类 2.服务发布监听者:运行在RPC服务端,1将服务端提供的 ...
- modelsim如何使用tcl脚本来写编译文件
对于modelsim进行仿真,可以通过GUI来进行仿真,当然更加快速的方法可以使用TCL脚本文件进行快速仿真. Modelsim采用TCL脚本文件仿真的具体流程如下所示: 具体的操作步骤如下 ...
- db2 执行计划
SQL 语句优化贯穿于数据库类应用程序的整个生命周期,包括前期程序开发,产品测试以及后期生产维护.针对于不同类型的 SQL 性能问题有不同的优化方法.索引对于改善数据库 SQL 查询操作性能至关重要, ...