php合并数组的几种方式 并简述其特点

目前工作中接触到的PHP数组合并方式主要有三种:

1、+操作符

2、array_merge()

3、array_merge_recursive()

它们的区别主要体现在对于相同键名(数字键名、字符串键名)的处理方式,

一 相同字符串键

php 复制代码
<?php

$arrFirst = [
    "first_key"  => 1,
    "second_key" => 1,
    "third_key"  => 1,
];

$arrSecond = [
    "first_key"  => 2,
    "second_key" => 2,
    "fourth_key" => 2,
];

//对于重复的字符串键,array_merge后,后面数组的键值会覆盖前面的
echo sprintf("\narray_merge result:\n%s", print_r(array_merge($arrFirst, $arrSecond), true));

//对于重复的字符串键,+操作后,前面数组的键值会覆盖后面的
echo sprintf("\narray + result:\n%s", print_r($arrFirst + $arrSecond, true));

//对于重复的字符串键,array_merge_recursive后,相同键名的键值会被合并到同一数组中(会递归)
echo sprintf("\narray_merge_recursive result:\n%s", print_r(array_merge_recursive($arrFirst, $arrSecond), true));

运行结果:

二 相同数字键

php 复制代码
<?php

$arrFirst = [
    111 => "first",
    222 => "first",
    "first" //会指定默认的数字键223
];

$arrSecond = [
    111 => "second",
    333 => "second",
    "second" //会指定默认的数字键334
];

//对于重复的数字键,+操作后,前面数组的键值会覆盖后面的,保留之前数字键
echo sprintf("\narray + result:\n%s", print_r($arrFirst + $arrSecond, true));

//对于重复的数字键,array_merge后,重排数字键,不会覆盖
echo sprintf("\narray_merge result:\n%s", print_r(array_merge($arrFirst, $arrSecond), true));

//对于重复的数字键,array_merge_recursive后,重排数字键,不会覆盖
echo sprintf("\narray_merge_recursive result:\n%s", print_r(array_merge_recursive($arrFirst, $arrSecond), true));

运行结果

相关推荐
liang_jy17 分钟前
Android View Tag
android
CHANG_THE_WORLD30 分钟前
python 批量终止进程exe
开发语言·python
古城小栈31 分钟前
从 cargo-whero 库中,找到提升 rust 的契机
开发语言·后端·rust
liang_jy39 分钟前
Android 架构中的统一分发与策略路由
android·架构
审判长烧鸡2 小时前
【GO VS PHP】之 指针/引用传递
go·php·指针·引用传递
Gary Studio2 小时前
安卓HAL C++基础-智能指针
开发语言·c++
啧不应该啊2 小时前
Day1 Python 与 C 的类型区别
c语言·开发语言
cen__y2 小时前
Linux07(信号01)
linux·运维·服务器·c语言·开发语言
scan7243 小时前
长期记忆存储在数据库里
android
xingpanvip3 小时前
星盘接口开发文档:星相日历接口指南
android·开发语言·前端·css·php·lua