在技术交流群里聊天引起的反思。 一个工作四五年的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
)
<pre>Array
(
[0] => php
[1] => java
[2] => mysql
[3] => redis
[4] => kafka
)
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
)
<pre>Array
(
[0] => php
[1] => java
[a] => golang
[2] => mysql
[3] => redis
[4] => kafka
)
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
)
<pre>Array
(
[0] => php
[1] => java
[a] => redis
[2] => mysql
[3] => kafka
)
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
)
<pre>Array
(
[0] => php
[1] => java
[a] => redis
[2] => python
[3] => mysql
[4] => kafka
)
总结啦…………
array_merge()将一个或者多个数组合并为一个数组;合并之后从下标为0开始,无论你是够规定了下标[除了关联数组的键值]
- array + array :下标相同时,把最先出现的值作为返回结果,后出现的直接“抛弃”不管了;
- array_merge():如果下标都为数字的话[索引数组],后出现的值不会覆盖原来的值,将所有的值都从下标为0开始排序;
如果下标有字符串的话[关联数组],相同下标的后面出现的值则会覆盖最先出现的值,剩下的下标不是字符串的则从下标为0开始排序;
|