PHP合并数组的2种方法小结

yipeiwu_com5年前PHP代码库

前言

在此前合并数组我一直用的是array_merge()这个函数,但最近我在换工作的时候遇到一道合并数组的面试题,我当时想的是将两个数组先转化为字符串,合并后再转化为数组输出,面试官说这个思路不太对,完了bulabula讲了一下数组基础的东西,然后确实是因为经验问题,或者是代码写太少,想不到还有什么方法,今天我百度了一下,原来还有‘+'号,

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()更狠,如果以索引形式出现的数组的内容,合并后如果键值相同也会覆盖掉!

总结

好了,以上就是这篇文章的全部内容了,是我个人的一些总结,本人入行不久,火候欠佳,如有总结不到位地方请各位高手批评指正,一定虚心接纳!

相关文章

PHP 多维数组排序实现代码

array_multisort (PHP 4, PHP 5) array_multisort -- 对多个数组或多维数组进行排序 说明 bool array_multisort ( ar...

修改PHP的memory_limit限制的方法分享

修改PHP的memory_limit限制的方法分享

解决这个问题,首先需要查看你的程序是否分配了过多的内存,在程序没有问题的情况下,你可以通过一下方法来增加PHP的内存限制(memory_limit)。 检查php的内存限制值 为了查看...

php实现字符串首字母大写和单词首字母大写的方法

本文实例讲述了php实现字符串首字母大写和单词首字母大写的方法。分享给大家供大家参考。具体分析如下: ucfirst可以对字符串首字母进行大小,ucwords可以对字符串中每个单词的首字...

PHP实现的同步推荐操作API接口案例分析

本文实例分析了PHP实现的同步推荐操作API接口。分享给大家供大家参考,具体如下: 文档 1. 功能 同步推荐关系 2. 接口方法 syncRelation 3. 参数描述 Origin...

php获取本机真实IP地址实例代码

本文实例为大家分享了php获取本机真实IP地址实例代码,供大家参考。 主要是获取操作系统为win2000/xp、win7的本机IP真实地址,和获取操作系统为linux类型的本机IP真实地...