PHP中合并数组的常见方法分享
作者:程序员零壹 发布时间:2023-05-25 12:02:48
相信各位phper在日常开发中,会经常遇到需要合并数组的场景。那么,在php中都有哪一些方法可以用来合并数组呢。
第一种,使用“+”运算符
使用加号“+”运算符,可以直接将两个数组合并成一个数组。
示例代码:
<?php
$a = [1,2,3,'a'=>'a'];
$b = ['a'=>'aa','b'=>'bb',4,5,6,7,'c'=>'cc',8];
$c = $a + $b;
var_dump($a);
var_dump($b);
var_dump($c);
输出结果:
// $a
array(4) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
["a"]=>
string(2) "a"
}
// $b
array(8) {
["a"]=>
string(2) "aa"
["b"]=>
string(2) "bb"
[0]=>
int(4)
[1]=>
int(5)
[2]=>
int(6)
[3]=>
int(7)
["c"]=>
string(2) "cc"
[4]=>
int(8)
}
// $c
array(8) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
["a"]=>
string(2) "a"
["b"]=>
string(2) "bb"
[3]=>
int(7)
["c"]=>
string(2) "cc"
[4]=>
int(8)
}
注意:使用加号“+”运算符进行数组合并,两个数组元素键相同的情况下,前面的元素会覆盖后面的元素。
第二种,使用array_merge()函数
用法:array_merge(array1,array2,array3...)
array_merge()函数用于将一个或者多个数组合并成一个数组。
如果两个或者多个数组元素有相同的键名,则最后的元素会覆盖其他元素。
示例代码:
<?php
$a = [1,2,3,'a'=>'a'];
$b = ['a'=>'aa','b'=>'bb',4,5,6,7,'c'=>'cc',8];
$c = array_merge($a,$b);
$d = [];
$e = array_merge($a,$d);
$f = array_merge($d,$b);
$g = array_merge([],[]);
var_dump($a);
var_dump($b);
var_dump($c);
var_dump($e);
var_dump($f);
var_dump($g);
输出结果:
// $a
array(4) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
["a"]=>
string(1) "a"
}
// $b
array(8) {
["a"]=>
string(2) "aa"
["b"]=>
string(2) "bb"
[0]=>
int(4)
[1]=>
int(5)
[2]=>
int(6)
[3]=>
int(7)
["c"]=>
string(2) "cc"
[4]=>
int(8)
}
// $c
array(11) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
["a"]=>
string(2) "aa"
["b"]=>
string(2) "bb"
[3]=>
int(4)
[4]=>
int(5)
[5]=>
int(6)
[6]=>
int(7)
["c"]=>
string(2) "cc"
[7]=>
int(8)
}
// $e
array(4) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
["a"]=>
string(1) "a"
}
// $f
array(8) {
["a"]=>
string(2) "aa"
["b"]=>
string(2) "bb"
[0]=>
int(4)
[1]=>
int(5)
[2]=>
int(6)
[3]=>
int(7)
["c"]=>
string(2) "cc"
[4]=>
int(8)
}
// $g
array(0) {
}
注意:两个数组的元素键相同的情况下,后面的元素会覆盖前面的元素。但如果数组的索引是数字索引或者数字字符串索引,合并后的数组的数字索引会按照顺序重置,从第一个数组的第一个数字索引元素从0开始依次填充。
第三种,使用array_merge_recursive()函数
用法:array_merge_recursive(array1,array2,array3...)
array_merge_recursive()函数用于将一个或者多个数组合并成一个数组。
示例代码:
<?php
$a = [1,2,3,'a'=>'a'];
$b = ['a'=>'aa','b'=>'bb',4,5,6,7,'c'=>'cc',8];
$c = array_merge_recursive($a,$b);
var_dump($a);
var_dump($b);
var_dump($c);
输出结果:
// $a
array(4) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
["a"]=>
string(1) "a"
}
// $b
array(8) {
["a"]=>
string(2) "aa"
["b"]=>
string(2) "bb"
[0]=>
int(4)
[1]=>
int(5)
[2]=>
int(6)
[3]=>
int(7)
["c"]=>
string(2) "cc"
[4]=>
int(8)
}
// $c
array(11) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
["a"]=>
array(2) {
[0]=>
string(1) "a"
[1]=>
string(2) "aa"
}
["b"]=>
string(2) "bb"
[3]=>
int(4)
[4]=>
int(5)
[5]=>
int(6)
[6]=>
int(7)
["c"]=>
string(2) "cc"
[7]=>
int(8)
}
注意:如果遇到两个或者多个数组的元素的键相同,array_merge_recursive()不会进行键名覆盖,而是将多个相同键名递归组成一个数组。如果数组的索引是数字索引或者数字字符串索引,合并后的数组的数字索引会按照顺序重置,从第一个数组的第一个数字索引元素从0开始依次填充。
第四种,使用array_combine()函数
用法:array_combine(keys,values)
array_combine()函数,通过合并两个数组来创建一个新的数组,其中一个数组元素为键名,另外一个数组的元素为键值。
示例代码:
<?php
$a = [1,2,3];
$b = ['a','b','c'];
$c = array_combine($a,$b);
$d = array_combine($b,$a);
var_dump($c);
var_dump($d);
输出结果:
// $c
array(3) {
[1]=>
string(1) "a"
[2]=>
string(1) "b"
[3]=>
string(1) "c"
}
// $d
array(3) {
["a"]=>
int(1)
["b"]=>
int(2)
["c"]=>
int(3)
}
注意:键名数组和键值数组的元素个数必须相同!
来源:https://blog.csdn.net/u010594957/article/details/127861134


猜你喜欢
- PDO::preparePDO::prepare — 准备要执行的SQL语句并返回一个 PDOStatement 对象(PHP 5 >
- Entity Framework 4.0 也可以支持大名鼎鼎的MySql,这篇POST将向展示如何实现EF+MyS
- 一、使用django自带的user做外键,可以直接在model中使用。只需导入settings模块使用方法:在app应用(此处是Produc
- 一、初始化CounterCounter支持3种形式的初始化,比如提供一个数组,一个字典,或单独键值对“=”式赋值。具体初始化的代码如下所示:
- 目录一、使用方法二、输出结果1.id2.select_type3.table4.partitions5.type6.possible_key
- 我的mysql版本 MYSQL V5.7.9,旧版本请使用:UPDATE mysql.user SET Password=PASSWORD(
- Go 命令Go语言自带有一套完整的命令操作工具,你可以通过在命令行中执行go来查看它们:图1.3 Go命令显示详细的信息这些命令对于我们平时
- 要实现功能,首先要做前端,经过对比其他网站的在线聊天功能,发现除了基本的聊天功能以外,还要注意以下几点.一次只能和一个人聊天,但是可以随意切
- 前言在部署一些定时运行或者长期运行的任务时,为了留存一些导致程序出现异常或错误的信息,通常会才用日志的方式来进行记录这些信息。python内
- 运行下面的代码你就可以清楚的认识到这两个参数的用法,innerText只能动态的改变指定元素内的文本内容,而innerHTML则不仅仅可以改
- 1、调用字符映射表输入特殊符号在键盘上按win+R,在打开的对话框中输入“charmap”,会出现字符映射表:2、利用字符编码输入特殊符号#
- 本文实例为大家分享了python自动发送报警监控邮件 的具体代码,供大家参考,具体内容如下因为有一些日常任务需要每日检查日否执行正确,所以需
- 折线图,柱状图,饼图用于数据展示,更直观的分析数据。实现绘制的效果图如下代码 很简单,如下import matplotlib.pyplot
- 前言:Python pass 是空语句,是为了保持程序结构的完整性;pass 不做任何事情,一般用做占位语句。Python 语言
- 很简单的一个东西,在'\n'、'\r\n'、'\r'3中换行符之间进行转换。用法usage:
- 一、BN(Batch Normalization)算法1. 对数据进行归一化处理的重要性神经网络学习过程的本质就是学习数据分布,在训练数据与
- “高并发和多线程”总是被一起提起,给人感觉两者好像相等,实则 高并发 ≠ 多线程多线程是完成任务的一种方法,高并发是系统运行的一种状态,通过
- 一、实验内容编写一Python程序,要求实现以下功能:读入一幅图像。使用两种以上的方法分别向图像中添加噪声。输出一幅二值图像,图像中未加入噪
- 假设现有一张人员表(表名:Person),若想将姓名、身份证号、住址这三个字段完全相同的记录查找出来,使用1: SELECT p
- 如何向客户端推送“出错信息”?下面是推送代码:服务器端:on error resume nextconn=se