博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php数组合并有哪三种方法
阅读量:6406 次
发布时间:2019-06-23

本文共 2561 字,大约阅读时间需要 8 分钟。

php数组合并有哪三种方法

一、总结

一句话总结:array_merge();array_merge_recursive()‘+'号

$a = array('color'=>'red',5,6); $b = array('color'=>'blue','type'=>'fruit',6,7);

 

 

1、array_merge()方式合并数组的特点是什么?

array_merge()合并数组会把前一个数组中关联形式数组的键值相同的覆盖,索引形式的则按键值顺序合并在一起)

 

2、array_merge()方式合并数组和array_merge_recursive()合并数组的区别是什么?

array_merge()合并数组会把前一个数组中关联形式数组的键值相同的覆盖,索引形式的则按键值顺序合并在一起

array (size=6) 'color' => string 'blue' (length=4) 0 => int 5 1 => int 6 'type' => string 'fruit' (length=5) 2 => int 6 3 => int 7

 

array_merge_recursive()函数会把键值相同的值以一个新的关联数组的形式返回,并以这个键值作为二维数组的键值,其他索引形式则不会受影响。

array (size=6) 'color' =>  array (size=2)  0 => string 'red' (length=3)  1 => string 'blue' (length=4) 0 => int 5 1 => int 6 'type' => string 'fruit' (length=5) 2 => int 6 3 => int 7

 

 

3、‘+'号合并数组的霸道之处在哪里?

使用‘+'号合并数组,是前面覆盖后面的,和array_merge()相反,而且它比array_merge()更狠,如果以索引形式出现的数组的内容,合并后如果键值相同也会覆盖掉!

array (size=4) 'color' => string 'red' (length=3) 0 => int 5 1 => int 6 'type' => string 'fruit' (length=5)

 

 

4、array_merge()方式合并数组和‘+'号合并数组的区别是什么?

a、array_merge()后面覆盖前面,‘+'号前面覆盖后面

b、array_merge()索引会按顺序排列(不会被覆盖),‘+'号索引前面会覆盖后面

 

 

二、php数组合并有哪三种方法

在此前合并数组我一直用的是array_merge()这个函数,但今天我百度了一下,原来还有‘+'号,

array_merge_recursive() ,也是可以用来合并数组的,根据我的记忆,我把那道题写出来看一下:

 
1
2
3
4
$a
=
array
(
'color'
=>
'red'
,5,6); 
$b
=
array
(
'color'
=>
'blue'
,
'type'
=>
'fruit'
,6,7); 
$arr
=
array_merge
(
$a
,
$b
); 
var_dump(
$arr
);
 
1
2
3
4
5
6
7
array
(size=6)
 
'color'
=> string
'blue'
(length=4)
 
0 => int 5
 
1 => int 6
 
'type'
=> string
'fruit'
(length=5)
 
2 => int 6
 
3 => int 7

要求是在不使用array_merge()的情况的得到相同的效果;

array_merge()合并数组会把前一个数组中关联形式数组的键值相同的覆盖,索引形式的则按键值顺序合并在一起)

1.先用array_merge_recursive()函数来合并一下:

1
2
3
4
$a
=
array
(
'color'
=>
'red'
,5,6);
$b
=
array
(
'color'
=>
'blue'
,
'type'
=>
'fruit'
,6,7);
$arr
=
array_merge_recursive
(
$a
,
$b
);
var_dump(
$arr
);

输出结果:

1
2
3
4
5
6
7
8
9
10
array
(size=6)
 
'color'
=> 
 
array
(size=2)
  
0 => string
'red'
(length=3)
  
1 => string
'blue'
(length=4)
 
0 => int 5
 
1 => int 6
 
'type'
=> string
'fruit'
(length=5)
 
2 => int 6
 
3 => int 7

从结果可以看出array_merge_recursive()函数会把键值相同的值以一个新的关联数组的形式返回,并以这个键值作为二维数组的键值,其他索引形式则不会受影响。

比起array_merge()的话就不会出现后面的数组键和前一个相同就把前一个的值覆盖的情况了。

2.再看下‘+'号合并数组的情况:

1
2
3
4
$a
=
array
(
'color'
=>
'red'
,5,6);
$b
=
array
(
'color'
=>
'blue'
,
'type'
=>
'fruit'
,6,7);
$arr
=
$a
+
$b
;
var_dump(
$arr
);

输出结果:

1
2
3
4
5
array
(size=4)
 
'color'
=> string
'red'
(length=3)
 
0 => int 5
 
1 => int 6
 
'type'
=> string
'fruit'
(length=5)

从这个结果可以看出,使用‘+'号合并数组,是前面覆盖后面的,和array_merge()相反,而且它比array_merge()更狠,如果以索引形式出现的数组的内容,合并后如果键值相同也会覆盖掉!

 

 

 

 

 

转载于:https://www.cnblogs.com/Renyi-Fan/p/9545698.html

你可能感兴趣的文章
Hadoop HDFS原理分析
查看>>
【webpack4】基本配置和入门api
查看>>
Mac使用ssh公钥登录Linux
查看>>
【366天】跃迁之路——程序员高效学习方法论探索系列(实验阶段124-2018.02.06)...
查看>>
POJ3070-Fibonacci(矩阵快速幂)
查看>>
[vue插件]基于vue2.x的电商图片放大镜插件
查看>>
标准的组件结构
查看>>
vue——一个页面实现音乐播放器
查看>>
SVG 扬帆起航
查看>>
NET Core-学习笔记(二)
查看>>
职业生涯上的点点滴滴
查看>>
Linux下添加新硬盘,分区及挂载
查看>>
一起来将vscode变成私人定制笔记本
查看>>
Flutter 云音乐
查看>>
RecyclerView实现多type页面
查看>>
个人的web商城网站
查看>>
debian fcitx
查看>>
排中律与实无穷问题的性质分析
查看>>
08/23 学习总结
查看>>
物理层
查看>>