php array_merge和加法数组的区别
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
echo "索引数组\n";
$arr1=['e','w','q'];
$arr2=['a','g','h'];
//print_r( $arr1);
//print_r( $arr2);
echo "当是索引数组的时候";
echo "加法";
print_r( $arr2+$arr1);
echo "merge:";
print_r(array_merge($arr2,$arr1));
echo "关联数组";
$arr3=array('e'=>'f','g'=>'k');
$arr4=array('i'=>'l','g'=>'sa');
//print_r($arr3);
//print_r($arr4);
print_r(array_merge($arr3,$arr4));
echo "后面覆盖前面";
print_r(array_merge($arr4,$arr3));
echo "关联数组加";
print_r($arr3+$arr4);
echo "加法运算,都舍弃相同的键名,后面覆盖前面。只有array_merge才会区别是关联数组(同键名覆盖)还是索引数组(不覆盖)。";
echo "既是索引,又是关联数组呢。";
$arr5=array('i'=>'l','g'=>'sa','gh');
$arr6=array('i'=>'l','g'=>'sa','gh2');
print_r($arr5);
print_r($arr6);
echo "加法:\n";
print_r($arr6+$arr5);
echo "merge\n";
print_r(array_merge($arr6,$arr5));
echo "混合 数组也是一样,分为索引部分和关联部队,merge和加法按各自的方式对待。";
1 | E:\WorkPlacePHPStorm\PHP74\php.exe E:\WorkPlacePHPStorm\learn\HelloWord\review\1.php |
总结:
使用array_merge( ),如果是关联数组合并,如果数组的键名相同,那么后面的值将覆盖前者;如果是数字索引数组合并,则不覆盖,而是后者附加到前者后面。使用数组加法运算,与 array_merge( )不同,加法运算不管是关联数组还是数字索引数组,都是将相同键名的值舍弃,也就是只保留首次出现该键名的元素,后来的具有相同键名的元素都不会被加进来。

