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必须是数字,或过滤非法字符串等.} ...
随机推荐
- mac安装MySQL-Python报错
报错内容主要是: EnvironmentError: mysql_config not found Command "python setup.py egg_info" faile ...
- 浅析LRC歌词文件
[时间:2018-12] [状态:Open] [关键词:字幕,LRC,歌词,lyric,文件格式] 0 引言 几年前(2010年左右),网络音乐流行与免费的时代,网上有大量的mp3,使用比较常见的播放 ...
- fastDFS 命令笔记
端口开放 这是命令运行的前提 iptables -I INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT iptables -I I ...
- USB2.0学习笔记连载(一):CY7C68013特性简介
上一篇博客已经给出了整个视频板卡架构,那么对于USB接口部分需要着重理解和学习. 对于目前来说,若是利用FPGA去模拟USB2.0内核,难度还是挺大的,整个状态的收发都不好控制.现在目前都在使用桥接芯 ...
- SAP从入门到精通 知识体系
初步认识 SAP标准课程培训 详细信息点击: SAP从入门到精通课程 标准培训主要是基于SAP标准的课程架构,定期在SAP的培训中心面向广大SAP客户开设公开课.培训过程中会应用SAP标准的教材内容, ...
- 【腾讯云的1001种玩法】几种在腾讯云建立WordPress的方法(Linux)(二)
版权声明:本文由张宁原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/126547001488207964 来源:腾云阁 ht ...
- 阅历>感悟
1.强扭的瓜不甜.在招聘的时候,面试官看不上你,你也不用赖着要去,你去能干好工作吗?面试官通常比你更清楚这个是事情.在比如谈恋爱,姑娘有更好的目标,不喜欢你了,决定离开你了,你再怎么挽留都是没意义的, ...
- linux Ubuntu系统安装百度aip
1.下载百度api pip install baidu-aip 2.配置视频转码工具ffmpeg Ubuntu16.04下安装FFmpeg(超简单版) 第一步:添加源. sudo add-apt-re ...
- [Educational Round 3][Codeforces 609E. Minimum spanning tree for each edge]
这题本来是想放在educational round 3的题解里的,但觉得很有意思就单独拿出来写了 题目链接:609E - Minimum spanning tree for each edge 题目大 ...
- JavaScript 运行机制详解
一.为什么JavaScript是单线程? JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事.那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊. Java ...