PHP数组合并:[“+”运算符]、[array_merge]、[array_merge_recursive]区别
1、“+”运算符
规则:
当两个数组的键名是数字键名或者字符串键名
$c = $a + $b
在$a后追加($b在$a中不存在的键名)键名和值
注意:
1、不覆盖,只是追加不存在的键名和对应的值
2、键名不重新索引
3、无论是全部数字键名还是混合,都只是追加键名和值,如果键名相同则不进行追加,即把最先出现的值作为最终结果返回
例1:数字键名
$a = array ( 'a' , ); $b = array ( 'u' , ); $c = $a + $b ; var_dump( $c ); output: array (1) { [0]=> string(1) "a" } |
例2:数字键名
$a = array ( 66=> 'a' , ); $b = array ( 60=> 'u' , 66=> 'c' ); $c = $a + $b ; var_dump( $c ); output: array (2) { [66]=> string(1) "a" [60]=> string(1) "u" } |
例3:字符键名
<?php $a = array ( 1=> 'a' , 2=> 'b' , 'c' => 'c' , 'd' => 'd' , ); $b = array ( 1=> 'u' , 3=> 'v' , 'c' => 'w' , 'd' => 'x' , 'y' => 'y' , 60=> 'z' , ); $c = $a + $b ; var_dump( $c ); ?> output: array (7) { [1]=> string(1) "a" [2]=> string(1) "b" [ "c" ]=> string(1) "c" [ "d" ]=> string(1) "d" [3]=> string(1) "v" [ "y" ]=> string(1) "y" [60]=> string(1) "z" } |
2、array array_merge ( array array1 [, array array2 [, array ...]] )
规则:
array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。
然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
注意:
1、数字索引,不会覆盖,值合并后,键名会连续方式重新索引
2、字符串键名,则该键名后面的值将覆盖前一个值
例1:数字键名
$a = array ( 'a' , ); $b = array ( 'u' , ); $c = array_merge ( $a , $b ); var_dump( $c ); output: array (2) { [0]=> string(1) "a" [1]=> string(1) "u" } |
例2:数字键名
$a = array ( 66=> 'a' , ); $b = array ( 60=> 'u' , 66=> 'c' ); $c = array_merge ( $a , $b ); var_dump( $c ); output: array (3) { [0]=> string(1) "a" [1]=> string(1) "u" [2]=> string(1) "c" } |
例3:字符键名
$a = array ( 1=> 'a' , 2=> 'b' , 'c' => 'c' , 'd' => 'd' , ); $b = array ( 1=> 'u' , 3=> 'v' , 'c' => 'w' , 'd' => 'x' , 'y' => 'y' , 60=> 'z' , ); $c = array_merge ( $a , $b ); var_dump( $c ); output: array (8) { [0]=> string(1) "a" [1]=> string(1) "b" [ "c" ]=> string(1) "w" [ "d" ]=> string(1) "x" [2]=> string(1) "u" [3]=> string(1) "v" [ "y" ]=> string(1) "y" [4]=> string(1) "z" } |
3、array array_merge_recursive ( array array1 [, array ...] )
array_merge_recursive() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则这些值会被合并到一个数组中去,这将递归下去,因此如果一个值本身是一个数组,本函数将按照相应的条目把它合并为另一个数组。
然而,如果数组具有相同的数组键名,后一个值将不会覆盖原来的值,而是附加到后面。
注意:
1、规则跟array_merge基本相同,只是在处理相同字符键名的时候,采用递归追加
例1:数字键名
$a = array ( 'a' , ); $b = array ( 'u' , ); $c = array_merge_recursive ( $a , $b ); var_dump( $c ); output: array (2) { [0]=> string(1) "a" [1]=> string(1) "u" } |
例2:数字键名
$a = array ( 'a' , ); $b = array ( 'u' , ); $c = array_merge_recursive ( $a , $b ); var_dump( $c ); output: array (2) { [0]=> string(1) "a" [1]=> string(1) "u" } |
例3:字符键名
$a = array ( 1=> 'a' , 2=> 'b' , 'c' => 'c' , 'd' => 'd' , ); $b = array ( 1=> 'u' , 3=> 'v' , 'c' => 'w' , 'd' => 'x' , 'y' => 'y' , 60=> 'z' , ); $c = array_merge_recursive ( $a , $b ); var_dump( $c ); output: array (8) { [0]=> string(1) "a" [1]=> string(1) "b" [ "c" ]=> array (2) { [0]=> string(1) "c" [1]=> string(1) "w" } [ "d" ]=> array (2) { [0]=> string(1) "d" [1]=> string(1) "x" } [2]=> string(1) "u" [3]=> string(1) "v" [ "y" ]=> string(1) "y" [4]=> string(1) "z" } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?