引言

PHP 数组合并一般有两种方式,直接用 + 或者使用 array_merge 都可以,在什么时候该使用哪个?以及要注意什么?

这都是一些非常基础的知识,但是知道这些知识非常有用,因为平常我们代码出现 bug,往往都是一些基础知识不牢固导致的。

PS:PHP 环境要求 5.4 以上

方式一:+

特点:键值相同,前面数组覆盖后面数组,后面数组无效

实例一:

print_r(['a'=>1, 'b' => 2] + ['a' => 3, 'd' => 4]);

// 输出 Array ( [a] => 1 [b] => 2 [d] => 4 )

后面数组 key 为 a 的值没起效果

实例二:

print_r(['a'] + ['b', 'c', 'd']);

// 输出 Array ( [0] => a [1] => c [2] => d )

注意输出结果 后面数组的第一个 value 值 b 不见了,这个地方最容易被忽视了。

结论:使用 + 方式合并数组,数组 key 会被保留;key 相同,前面数据会覆盖后面数据。

方式二:使用 array_merge

特点:键值相同,后面数组覆盖前面数组,前面数组无效

实例一:

print_r(array_merge(['a'=>1, 'b' => 2] , ['a' => 3, 'd' => 4]));

// 输出 Array ( [a] => 3 [b] => 2 [d] => 4 )

前面数组 key 为 a 的值没起效果

实例二:

print_r(array_merge(['a'], ['b', 'c', 'd']));

// 输出 Array ( [0] => a [1] => b [2] => c [3] => d )

print_r(array_merge([1=>'a', 2 => 'b'] , [0 => 'c', 1 => 'd']));

// 输出 Array ( [0] => a [1] => b [2] => c [3] => d )

数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。

结论:使用 array_merge 方式合并数组,如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。

总结

如果你要合并数组 key 是字符串,两种方式可以随便用,只要注意是 key 相同时是前面被覆盖还是后面被覆盖就可以了。

但是一旦你要合并的数组 key 是数字,你就要结合你的场景思考了,然后谨慎选择其中一个合并。(这个时候大多数是使用 array_merge)

php yii结果集合并,PHP 基础之数组合并相关推荐

  1. Java合并两个int数组合并_Java中如何把两个数组合并为一个

    在Java中,如何把两个String[]合并为一个? 看起来是一个很简单的问题.但是如何才能把代码写得高效简洁,却还是值得思考的.这里介绍四种方法,请参考选用. 一.apache-commons 这是 ...

  2. php多维数组合并_php多维数组合并

    * Arr.php namespace app\common\utils; class Arr { /** * 多维数组合并 例如关联数组配置项默认值处理 * @param $array1 * @pa ...

  3. PHP array合并,PHP array_merge():数组合并

    PHP array_merge() 函数用来将多个数组合并为一个,其语法如下: array array_merge ( array $arr1 [, array $arr2, array $arr3 ...

  4. php 二维数组字段合并,PHP将二维数组某一个字段相同的数组合并起来的方法,二维数组数组_PHP教程...

    PHP将二维数组某一个字段相同的数组合并起来的方法,二维数组数组 本文实例讲述了PHP将二维数组某一个字段相同的数组合并起来的方法.分享给大家供大家参考,具体如下: 例子: array(3) { [0 ...

  5. php怎么将数组合并,PHP数组合并

    很多时候我们要把多个数组进行合并,在php函数库中合并函数有: 直接合并:array_merge,array_merge_recursive; 间接合并:array_map,array_filter等 ...

  6. php数组拆分的函数是,php基础之数组的合并、拆分、区别取值函数集

    PHP数组的合并.拆分.区别取值函数集 都说PHP的数组功能很强大.只有真正用于项目工作当中才能够感受得到,至少我认为是,现在已慢慢的发觉其中的奥秘了-- 合并数组有三个函数: 1.array_com ...

  7. 【Python数据结构】——并查集的实现(查找、合并、集合、实例)

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/7/30 23:12 # @Author : @linlianqin # @S ...

  8. excel教程自学网_188集Office零基础自学教程,教你玩转word、ppt、excel,速领取

    188集Office零基础自学教程,教你玩转word.ppt.excel,速领取「领取方式在文章最后」 Microsoft Office是一套由微软公司开发的办公软件,它为MicrosoftWindo ...

  9. Linux云计算虚拟化-Kubernetes 容器集群管理系统基础概念讲述

    文章目录 Linux云计算虚拟化-Kubernetes 容器集群管理系统基础概念讲述 1. kubernetes简介 2. k8s常见组件介绍 3. k8s原理持续更新...... Linux云计算虚 ...

最新文章

  1. 【转载】Visual Studio 2015 for Linux更好地支持Linux下的开发
  2. Spring框架IoC和传统bean调用的区别
  3. gitlub统计一个人提交代码行数
  4. Android--获取当前系统时间
  5. 在Java里怎将字节数转换为我们可以读懂的格式?
  6. mysql3.2.2 .tar.gz_关于MySQL-python-1.2.3.tar.gz安装失败的解决方案
  7. windows phone 页面导航(6)
  8. Cannot get a connection, pool exhausted, cause: ValidateObject failed
  9. Tensorflow2.0数据和部署(三)——基于Tensorflow数据服务的数据管道
  10. 《Oracle SQL疑难解析》——1.10 删除表中的所有行
  11. sql获取3天前日期
  12. 2022达摩院青橙奖公布:15位青年学者多半从事基础研究,4位女科学家获奖破纪录...
  13. html图表插入ppt
  14. 再次风靡春节的《熊出没》,究竟下了哪些硬功夫?
  15. python 爬取淘宝视频_识别假货有绝招,先用python抓淘宝评论(附视频教程)
  16. 邯郸市信息产业局关于参加2007’中国河北软件与信息服务业发展国际论坛的通知...
  17. mysql添加表或字段注释
  18. elasticsearch实现基于拼音搜索
  19. 点集拓扑学思维导图(附pdf源文档)
  20. linux 目录中的文件和子目录生成jar包文件的方法

热门文章

  1. “全宇宙首个”用中文编写的操作系统,作者还自创了甲、乙、丙编程语言?
  2. 在线协作平台「蓝湖」完成5亿元C轮融资,多元化产品布局提升产品研发效率...
  3. 联手三年,获取数千名客户,阿里云如何重构Elastic开放免费的技术?
  4. 面向全场景模块化设计,京东智联云的服务器部署有多灵活?
  5. 华为正式出售荣耀;圆通回应内鬼致 40 万条个人信息泄露;Spring Boot 2.3.6 发布|极客头条...
  6. 如何将日志系统切换到 Logback?
  7. 共建智慧云基石,阿里云携手英特尔走向数智未来
  8. 百度智能云发布『乘风』 端云一体化方案 助力人脸应用10分钟落地
  9. 由 Apache 说开,中国开源项目已经走向世界!
  10. 程序员必修课:为什么非要用 Python 做数据分析?Excel 不好吗?