PHP基础函数中的array_merge内置函数与+有何区别?

技术分享 2018年09月10日 阅读 490 我也庸俗

PHP中的array_merge和正常的+号到底有什么区别?可能很多朋友并没有注意到这个细节,因为平常我们更多地是使用array_merge函数来操作两个数组的相加,但是这也恰巧导致我们并没有过多地思考这个两个数组的 + 问题。

在我很多的面试中,都会被经常问到PHP的内置函数,而最常见的就是问你array_merge函数的作用使用,包括去网易面试等等。在这里呢,正好也在这里解释下,这两者到底有何不同!

①首先:数组的下表分为数字和字符,则区别如下:

1,当数组的下标为数字的时候,array1+array2相加会把最先出现的值最终的结果返回回来,把后面那些数组拥有相同键名的那些值“抛弃”掉,注意抛弃掉而不是覆盖掉;array_merge则不会覆盖掉原来的值。
案例一如下:

<?php
/
  @desc 数字下标区别
  @time 2018-01-20
 */
$array1 = [\’小槐树\’,\’大槐树\’,\’老槐树\’,\’神奇的大槐树\’];
$array2 = [\’PHP专区\’,\’前端开发\’,\’Linux\’,\’MySQL\’];
$result1 = array_merge($array1, $array2);
var_dump($result1);
echo \’<br/>\’;
$result2 = $array1 + $array2;
var_dump($result2);
结果:
array(8) {
  [0]=>
  string(9) “小槐树”
  [1]=>
  string(9) “大槐树”
  [2]=>
  string(9) “老槐树”
  [3]=>
  string(18) “神奇的大槐树”
  [4]=>
  string(9) “PHP专区”
  [5]=>
  string(12) “前端开发”
  [6]=>
  string(5) “Linux”
  [7]=>
  string(5) “MySQL”
}
<br/>array(4) {
  [0]=>
  string(9) “小槐树”
  [1]=>
  string(9) “大槐树”
  [2]=>
  string(9) “老槐树”
  [3]=>
  string(18) “神奇的大槐树”
}

2,当下标我字符的时候,array1+array2相加任然会把最先出现的值最终的结果返回回来,舍弃掉后面键相同的元素,array_merge则会,如果键相同的,后面元素覆盖前面元素。

案例二如下:

/**
  @desc 数字下标区别
  @time 2018-01-20 11:10
 */
$array1 = [\’a\’=>1,\’b\’=>2,\’c\’=>3,\’d\’=>\’4\’];
$array2 = [\’a\’=>5,\’d\’=>6,\’e\’=>\’7\’,\’8\’];
$result1 = array_merge($array1, $array2);
var_dump($result1);
echo \’<br/>\’;
$result2 = $array1 + $array2;
var_dump($result2);
结果:
array(6) {
  [“a”]=>
  int(5)
  [“b”]=>
  int(2)
  [“c”]=>
  int(3)
  [“d”]=>
  int(6)
  [“e”]=>
  string(1) “7”
  [0]=>
  string(1) “8”
}
<br/>array(6) {
  [“a”]=>
  int(1)
  [“b”]=>
  int(2)
  [“c”]=>
  int(3)
  [“d”]=>
  string(1) “4”
  [“e”]=>
  string(1) “7”
  [0]=>
  string(1) “8”
}

我想,通过以上两个案例,大家是不是已经很明白的搞清楚两者区别呢?记住了,以后再遇到就OK的。

我也庸俗 我也庸俗 开发工程师@有赞科技公司

写了 159279 字,被 1 人关注,共写了 71 篇笔记

孤独了忙碌的人
推荐文章:
  • 大数据领域Flink 与 Spark之间的区别?

    学而不思则罔 思而不学则殆,2020年砥砺前行!前言大家都知道已经2020年了,也到了新的一年。作为一个主营电商的公司,年底都会很忙。所以最近的更新进度也停滞不前,本来准备大侃PHP设计模式的,但是因...

    豆浆大叔 3个月前 3 吐槽 264 围观 技术分享
  • php如何实现钩子与实践案例

    前言学而不思则罔,思而不学则殆。30则而立,头顶正则脱光!昨天晚上,突然想起了PHP中的钩子如何使用?说实话,像dz,wordpress,TP,CI框架都已经集成了Hook钩子,尽管我不怎么使用框架以...

    豆浆大叔 3个月前 0 吐槽 101 围观 技术分享
  • Linux无法显示ip地址的解决办法

    今天想趁着有时间,用虚拟机调试一下lua脚本和其他的功能,结果启动虚拟机使用xshell连接不上,然后使用终端查看IP地址无法查看到,记录一下排查错误流程。查看IP地址使用ip addr 或者 ifc...

    豆浆大叔 4个月前 0 吐槽 155 围观 技术分享
  • 高并发性能指标QPS,TPS,RT,并发数,吞吐量是指什么?

    QPS,每秒查询QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。互联网中,作为域名系...

    豆浆大叔 4个月前 0 吐槽 365 围观 技术分享
  • 分享一些PHP常用的小算法

    下面分享一些最常见的算法,用PHP如何实现,拓展下知识面。冒泡排序function bubble_sort($arr) { $n=count($arr); for($i=0;$i<$n-1;$...

    我也庸俗 4个月前 0 吐槽 134 围观 技术分享
表情
  • [:821l1001:]
  • [:821l1002:]
  • [:821l1003:]
  • [:821l1004:]
  • [:821l1005:]
  • [:821l1006:]
  • [:821l1007:]
  • [:821l1008:]
  • [:821l1009:]
  • [:821l1010:]
  • [:821l1011:]
  • [:821l1012:]
  • [:821l1013:]
  • [:821l1014:]
  • [:821l1015:]
  • [:821l1016:]
  • [:821l1017:]
  • [:821l1018:]
  • [:821l1019:]
  • [:821l1020:]
  • [:821l1021:]
  • [:821l1022:]
  • [:821l1023:]
  • [:821l1024:]
  • [:821l1025:]
  • [:821l1026:]
  • [:821l1027:]
  • [:821l1028:]
  • [:821l1029:]
  • [:821l1030:]
  • [:821l1031:]
  • [:821l1032:]
  • [:821l1033:]
  • [:821l1034:]
  • [:821l1035:]
  • [:821l1036:]
  • [:821l1037:]
  • [:821l1038:]
  • [:821l1039:]
  • [:821l1040:]
  • [:821l1041:]
  • [:821l1042:]
  • [:821l1043:]
  • [:821l1044:]
  • [:821l1045:]
  • [:821l1046:]
  • [:821l1047:]
  • [:821l1048:]
  • [:821l1049:]
  • [:anger:]
  • [:applause:]
  • [:awkward:]
  • [:brokenheart:]
  • [:clown:]
  • [:confused:]
  • [:decline:]
  • [:diggingmouth:]
  • [:eyebrows:]
  • [:grinning:]
  • [:haha:]
  • [:ill:]
  • [:kiss:]
  • [:lascivious:]
  • [:laugh:]
  • [:love:]
  • [:lovely:]
  • [:rhinorrhea:]
  • [:smile:]
  • [:solid:]
  • [:strong:]
  • [:sweat:]
  • [:tearcollapse:]
  • [:tongue:]
  • [:uncomfortable:]
  • [:weak:]
  • [:worry:]
Tips:支持Markdown语法

1 个评论

开发工程师 @ 有赞科技公司

登录

第三方账号登录:
GitHub
微信
微博