前言

在此前合并数组我一直用的是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怎么合并元素不等的数组_PHP合并数组的2种方法小结相关推荐

  1. php数组如何写入txt文件中_php将数组写入到文件的三种方法

    php的数组十分强大,有些数据不存入数据库直接写到文件上,用的时候直接从文件中读取,本文章向大家介绍php将数组写入到文件的三种方法. 第一:serialize方法 使用 serialize 将数组序 ...

  2. php+数组存放文件名_php将数组存储为文本文件的三种方法

    本篇文章主要介绍php将数组存储为文本文件的三种方法,感兴趣的朋友参考下,希望对大家有所帮助. (1)利用serialize 将数组序列化存储为文本文件,调用时候再使用unserialize 还原&l ...

  3. PHP获取数组最后一个值的2种方法

    这篇文章主要介绍了PHP获取数组最后一个值的2种方法,本文直接给出实现代码,代码中包含注释,需要的朋友可以参考下 代码如下: $array=array(1,2,3,4,5);     echo $ar ...

  4. 获取php数组最后,php获取数组最后一个值的2种方法

    摘要:这篇文章主要介绍了PHP获取数组最后一个值的2种方法,本文直接给出实现代码,代码中包含注释,需要的朋友可以参考下$array=array(1,2,3,4,5); echo $array[coun ...

  5. python去重复排序_Python实现删除排序数组中重复项的两种方法示例

    本文实例讲述了Python实现删除排序数组中重复项的两种方法.分享给大家供大家参考,具体如下: 对于给定的有序数组nums,移除数组中存在的重复数字,确保每个数字只出现一次并返回新数组的长度 注意:不 ...

  6. 二维数组赋初值你会几种方法?

    二维数组赋初值你会几种方法 文章目录 方法一 方法二 方法三 方法四 方法五 方法一 分行给二维数组赋初值: int arr[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,1 ...

  7. Java 数组转成集合List三种方法和(数组、集合List、Set相互转换)

    Java 数组转成集合List 三种方法 package com.list;import java.util.ArrayList; import java.util.Arrays; import ja ...

  8. js算法数组flat展平的几种方法

    数组的展平,主要是指的是数组嵌套数组转为一维数组,总结了一下几种方法 es6原生的方法 链接: es6中的flat let arr = [1, 2, [3, 4]].flat() console.lo ...

  9. python读取二维数组的行列数_Python获取二维数组的行列数的2种方法

    Python获取二维数组的行列数的2种方法 这篇文章主要介绍了Python获取二维数组的行列数的2种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考 ...

  10. 将数组转化成字符串的两种方法

    将数组转化成字符串的两种方法 let arr = [1,2,8,9,'西瓜']; console.log(arr.toString());//将数组转化为字符串 console.log(arr.toS ...

最新文章

  1. inv(a) matlab,设A为矩阵,b为列向量,则Matlab中运算A\b 和运算inv(A)*b
  2. 某SAP项目进销存报表优化小记
  3. pytorch按维度取数据0917
  4. 3d饼图 vue_在Vue中如何使用highCharts绘制3d饼图
  5. JMetro 5.5版发布
  6. 前端学习(1874)vue之电商管理系统电商系统之修改element-ui组件的按需导入
  7. video-js RTMP直播
  8. 【实施自动化测试项目】的7大必备条件!那些我踩过的坑......
  9. 再谈关于IP数据报分片
  10. AGV机器人(1)基于视觉避障的理论基础
  11. 安装TensorFlow-gpu
  12. 两个前端项目利用iframe进行通信
  13. 阿里云如何启动mysql数据库_阿里云服务器启动mysql
  14. cad添加自己线性_如何在CAD中添加自行创建的线型.doc
  15. 主机箱前置耳机插孔没有声音的解决方案
  16. 华为ipd项目管理流程_从偶然成功到持续成功—华为IPD体系的建设
  17. 海量前端后台Java源码模板下载
  18. idea 有时提示找不到类或者符号
  19. 网站服务器配置e5,从性能到配置 E5服务器全面扫描
  20. linux 启动rsyslog服务_linux服务之rsyslog

热门文章

  1. 20岁生日,写下的我
  2. udev生成/etc/udev/rules.d/99-oracle-asmdevices.rules
  3. 单体预聚合的目的是什么_聚合物答案
  4. CAD图形导入Abaqus2020方法
  5. sysctl与devlink总结
  6. consul重新注册,避免注册失败的情况。
  7. 软件架构整洁之道-读书笔记(3)
  8. Mathtype6.9c的安装使用方法(个人笔记)
  9. CAMWorks 2021 SP2 for SolidWorks
  10. 单字双字三字_有深厚寓意的单字名及双字名,最适合给宝宝起名了