IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> php array_merge()和+的区别 -> 正文阅读

[PHP知识库]php array_merge()和+的区别

在技术交流群里聊天引起的反思。
一个工作四五年的phper竟然在被面试官问到“标题”这样的问题的时候不知道如何回答???他的原话是老记但是记不住;
死记硬背显然是走不通的,下面的就是按照自己理解来的;

直接上代码:
1、两个数组都是索引数组【下标是从0开始的,自己分配的下标】

<?php
$a = ['php','java'];
$b = ['mysql','redis','kafka'];
echo '<pre>';
print_r($a + $b);
echo '<pre>';
print_r(array_merge($a,$b));

结果:
<pre>Array
(
    [0] => php
    [1] => java
    [2] => kafka
)//很显然:这里的[0][1]的值是$a的值,而[2]的值是$b的值;也就是说$a,$b中下标相同的话选取的是$a的值,在加$b中下标跟$a不同的值;
<pre>Array
(
    [0] => php
    [1] => java
    [2] => mysql
    [3] => redis
    [4] => kafka
)//而这里,就是将$a,$b两个数组合并然后从下标0开始组成数组;


2、当有一个数组为索引数组,而另一个为关联数组的时候

<?php
$a = ['php','java','a'=>'golang'];
$b = ['mysql','redis','kafka'];
echo '<pre>';
print_r($a + $b);
echo '<pre>';
print_r(array_merge($a,$b));


结果:
<pre>Array
(
    [0] => php
    [1] => java
    [a] => golang
    [2] => kafka
)//发现$a,$b如果下标相同的话,还是取$a的值,在加上$a,$b中下标不同的值;
<pre>Array
(
    [0] => php
    [1] => java
    [a] => golang
    [2] => mysql
    [3] => redis
    [4] => kafka
)//$a ,$b的值全都取出来,然后从下标0开始排

3、当两个数组都为关联数组【使用自己分配给数组的键的数组】

<?php
$a = ['php','java','a'=>'golang'];
$b = ['mysql','a'=>'redis','kafka'];
echo '<pre>';
print_r($a + $b);
echo '<pre>';
print_r(array_merge($a,$b));

结果:
<pre>Array
(
    [0] => php
    [1] => java
    [a] => golang
)//发现此时还是$a的所有的值,即使$a和$b都有下标为['a']的
<pre>Array
(
    [0] => php
    [1] => java
    [a] => redis
    [2] => mysql
    [3] => kafka
)//发现此时的值有了变化,$a和$b中下标为数字的[索引]从0开始的,而下标为字符串的[关联]的则是$b里面的值覆盖了$a里面的值

4、混合双打

<?php
$a = ['php','java','a'=>'golang','5'=>'python'];
$b = ['mysql','a'=>'redis','kafka'];
echo '<pre>';
print_r($a + $b);
echo '<pre>';
print_r(array_merge($a,$b));

结果:
Array
(
    [0] => php
    [1] => java
    [a] => golang
    [5] => python
)//发现下标相同的取得是$a的值
<pre>Array
(
    [0] => php
    [1] => java
    [a] => redis
    [2] => python
    [3] => mysql
    [4] => kafka
)//发现$a,$b下标为数字的从0开始,哪怕python的下标你已经标好了['5'],也得从0开始,而下标为字符串的则是$b的值替换了$a的值

总结啦…………

array_merge()将一个或者多个数组合并为一个数组;合并之后从下标为0开始,无论你是够规定了下标[除了关联数组的键值]

  • array + array :下标相同时,把最先出现的值作为返回结果,后出现的直接“抛弃”不管了;
  • array_merge():如果下标都为数字的话[索引数组],后出现的值不会覆盖原来的值,将所有的值都从下标为0开始排序;
    如果下标有字符串的话[关联数组],相同下标的后面出现的值则会覆盖最先出现的值,剩下的下标不是字符串的则从下标为0开始排序;
  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-07-23 10:29:01  更:2021-07-23 10:31:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/4 23:11:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码