php合并数组时array_merge和+号的区别
昨天 20:07
字数 1775
阅读 3898
大家都知道合并数组常用的两种方式array_merge
和 +
但是二者是有区别的,用到的时候要小心了,这里是有坑的,比如下面的代码
$a = ['zhangsan', 'lisi'];
$b = ['wangwu', 'zhaoliu'];
$r1 = $a + $b;
$r2 = array_merge($a, $b);
var_dump($r1);
var_dump($r2);
输出结果
# $r1
array (size=2)
0 => string 'zhangsan' (length=8)
1 => string 'lisi' (length=4)
# $r2
array (size=4)
0 => string 'zhangsan' (length=8)
1 => string 'lisi' (length=4)
2 => string 'wangwu' (length=6)
3 => string 'zhaoliu' (length=7)
为了检验二者的区别,在看下面的代码。
$a = ['name' => 'zhangsan', 'age' => 24];
$b = ['name' => 'lisi', 'sex' => 'male', 'city' => 'shanghai'];
$r1 = $a + $b;
$r2 = array_merge($a, $b);
var_dump($r1);
var_dump($r2);
输出结果
# $r1
array (size=4)
'name' => string 'zhangsan' (length=8)
'age' => int 24
'sex' => string 'male' (length=4)
'city' => string 'shanghai' (length=8)
# $r2
array (size=4)
'name' => string 'lisi' (length=4)
'age' => int 24
'sex' => string 'male' (length=4)
'city' => string 'shanghai' (length=8)
看到这是不是明白了一点
在数组为索引数组(即键值为数字)时,用 +
合并数组时,+
前的数组会把 +
后的数组中拥有相同键的值覆盖掉;而array_merge
则不会覆盖拥有相同键的值,并且会重新生成新的键。
在数组为关联数组(即键值为字符串)时,用 +
合并数组时,+
前的数组会把 +
后的数组中拥有相同键的值覆盖掉;而array_merge
合并数组时,参数后面的数组会把前面的数组中拥有相同键的值覆盖掉。
为了验证我们的猜想,再看下面的例子。
$a = [0 => 'profile_a', 'name' => 'zhangsan', 'age' => 24, 'city' => 'beijing'];
$b = [0 => 'profile_b', 1 => 'this is zhangsan`s profile', 'sex' => 'male', 'city' => 'shanghai'];
$r1 = $a + $b;
$r2 = array_merge($a, $b);
var_dump($r1);
var_dump($r2);
输出结果
# $r1
array (size=6)
0 => string 'profile_a' (length=9)
'name' => string 'zhangsan' (length=8)
'age' => int 24
'city' => string 'beijing' (length=7)
1 => string 'this is zhangsan`s profile' (length=26)
'sex' => string 'male' (length=4)
# $r2
array (size=7)
0 => string 'profile_a' (length=9)
'name' => string 'zhangsan' (length=8)
'age' => int 24
'city' => string 'shanghai' (length=8)
1 => string 'profile_b' (length=9)
2 => string 'this is zhangsan`s profile' (length=26)
'sex' => string 'male' (length=4)
当数组中的键既有数字又有字符串时,使用 +
合并数组依然是前边的数组覆盖后面数组中拥有想似键的值,array_merge
则会保留合并键为数字的值,覆盖键为字符的值(后面的覆盖前面的) 。
php的数组过于灵活了,带来便利的同时也要注意一些坑。
> 测试环境
> php v 7.0
3人点赞>
请登录后发表评论
相关推荐
文章归档
2024-11
1 篇
2024-06
1 篇
2024-05
2 篇
2024-04
2 篇
2024-03
2 篇
展开剩余 68 条
2024-01
1 篇
2023-10
1 篇
2023-09
1 篇
2023-08
1 篇
2023-06
1 篇
2023-04
1 篇
2022-12
2 篇
2022-06
1 篇
2022-04
4 篇
2022-03
3 篇
2022-01
6 篇
2021-12
2 篇
2021-11
2 篇
2021-10
2 篇
2021-09
1 篇
2021-08
2 篇
2021-07
4 篇
2021-06
1 篇
2021-05
3 篇
2021-04
3 篇
2021-01
2 篇
2020-11
1 篇
2020-10
3 篇
2020-09
2 篇
2020-08
1 篇
2020-07
5 篇
2020-06
5 篇
2020-05
1 篇
2020-04
1 篇
2020-03
2 篇
2020-02
3 篇
2020-01
1 篇
2019-11
5 篇
2019-10
10 篇
2019-09
12 篇
2019-08
17 篇
2019-07
8 篇
2019-05
3 篇
2019-04
8 篇
2019-03
7 篇
2019-02
8 篇
2019-01
5 篇
2018-12
7 篇
2018-11
8 篇
2018-10
4 篇
2018-09
7 篇
2018-08
12 篇
2018-07
9 篇
2018-06
6 篇
2018-05
11 篇
2018-04
18 篇
2018-03
1 篇
2018-02
2 篇
2018-01
10 篇
2017-12
14 篇
2017-11
44 篇
2017-10
13 篇
2017-09
4 篇
2017-08
12 篇
2017-07
5 篇
2017-06
4 篇
2017-05
2 篇
2017-04
3 篇
2017-03
9 篇
2017-02
3 篇
2017-01
2 篇
2016-12
10 篇
2016-11
4 篇
最新文章
最受欢迎
11-07 19:00
06-26 11:51
05-17 17:08
05-17 10:59
04-11 17:05
13 评论
11 评论
10 评论
可以转载吗 会标注转载和作者的
特点注册一个账号来感谢你 写的很棒很细致
不错,感谢分享