这里有新鲜出炉的 PHP 教程,程序狗速度看过来!
PHP(外文名: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,入门门槛较低,易于学习,使用广泛,主要适用于 web 开发领域。PHP 的文件后缀名为 php。
大家都知道 PHP 中两个数组合并可以使用 + 或者 array_merge,但之间还是有区别的,而且这些区别如果了解不清楚项目中会要命的!这篇文章给加总结介绍了 PHP 合并数组的 2 种方法,有需要的朋友们可以参考借鉴,下面来一起学习学习吧。
前言
在此前合并数组我一直用的是
这个函数,但最近我在换工作的时候遇到一道合并数组的面试题,我当时想的是将两个数组先转化为字符串,合并后再转化为数组输出,面试官说这个思路不太对,完了 bulabula 讲了一下数组基础的东西,然后确实是因为经验问题,或者是代码写太少,想不到还有什么方法,今天我百度了一下,原来还有'+'号,
- array_merge()
, 也是可以用来合并数组的,根据我的记忆,我把那道题写出来看一下:
- array_merge_recursive()
- $a = array('color' = >'red', 5, 6);
- $b = array('color' = >'blue', 'type' = >'fruit', 6, 7);
- $arr = array_merge($a, $b);
- var_dump($arr);
- array (size=6)
- 'color' => string 'blue' (length=4)
- 0 => int 5
- 1 => int 6
- 'type' => string 'fruit' (length=5)
- 2 => int 6
- 3 => int 7
要求是在不使用
的情况的得到相同的效果;
- array_merge()
(
合并数组会把前一个数组中关联形式数组的键值相同的覆盖,索引形式的则按键值顺序合并在一起)
- array_merge()
1. 先用 array_merge_recursive() 函数来合并一下:
- $a = array('color' = >'red', 5, 6);
- $b = array('color' = >'blue', 'type' = >'fruit', 6, 7);
- $arr = array_merge_recursive($a, $b);
- var_dump($arr);
输出结果:
- array (size=6)
- 'color' =>
- array (size=2)
- 0 => string 'red' (length=3)
- 1 => string 'blue' (length=4)
- 0 => int 5
- 1 => int 6
- 'type' => string 'fruit' (length=5)
- 2 => int 6
- 3 => int 7
从结果可以看出
函数会把键值相同的值以一个新的关联数组的形式返回,并以这个键值作为二维数组的键值,其他索引形式则不会受影响。
- array_merge_recursive()
比起
的话就不会出现后面的数组键和前一个相同就把前一个的值覆盖的情况了。
- array_merge()
2. 再看下'+'号合并数组的情况:
- $a = array('color' = >'red', 5, 6);
- $b = array('color' = >'blue', 'type' = >'fruit', 6, 7);
- $arr = $a + $b;
- var_dump($arr);
输出结果:
- array (size=4)
- 'color' => string 'red' (length=3)
- 0 => int 5
- 1 => int 6
- 'type' => string 'fruit' (length=5)
从这个结果可以看出,使用'+'号合并数组,是前面覆盖后面的,和
相反,而且它比
- array_merge()
更狠,如果以索引形式出现的数组的内容,合并后如果键值相同也会覆盖掉!
- array_merge()
总结
来源: http://www.phperz.com/article/17/0805/341028.html