牛骨文教育服务平台(让学习变的简单)
博文笔记

PHP中两个数组合并可以使用+或者array_merge 区别

创建时间:2015-01-09 投稿人: 浏览次数:126
PHP中两个数组合并可以使用+或者array_merge,但之间还是有区别的,而且这些区别如果了解不清楚项目中会要命的!


主要区别是两个或者多个数组中如果出现相同键名,键名分为字符串或者数字,需要注意


1)键名为数字时,array_merge()后面的值将不会覆盖原来的值,而是附加到后面,但+合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(不是覆盖)


2)键名为字符串时,array_merge()此时会覆盖掉前面相同键名的值,但+仍然把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(不是覆盖)。


需要注意的是数组键形式 "数字" 等价于 数字

$a = array("a", "b");
$b = array("c", "d");
$c = $a + $b;
print_r($a);
print_r(array_merge($a, $b));
//输出:
Array ( [0] => a [1] => b ) 
Array ( [0] => a [1] => b [2] => c [3] => d )


array  0 => string "a" (length=1)  1 => string "b" (length=1)array  0 => string "a" (length=1)  1 => string "b" (length=1)  2 => string "c" (length=1)  3 => string "d" (length=1)

++++++++++++++++++++++++++++++++++++++++++    
$a = array(	0 => "a",	1 => "b");
$b = array(	0 => "c",	1 => "b");
$c = $a + $b;
print_r($c);
echo "<br />";
print_r(array_merge($a, $b));
//输出:
Array ( [0] => a [1] => b ) 
Array ( [0] => a [1] => b [2] => c [3] => b )

array  0 => string "a" (length=1)  1 => string "b" (length=1)array  0 => string "a" (length=1)  1 => string "b" (length=1)  2 => string "c" (length=1)  3 => string "b" (length=1)
++++++++++++++++++++++++++++++++++++++++++  
$a = array("a", "b");
$b = array(	"0" => "c",	1 => "b");
$c = $a + $b;
print_r($c);
echo "<br />";
print_r(array_merge($a, $b));

//输出:
Array ( [0] => a [1] => b ) 
Array ( [0] => a [1] => b [2] => c [3] => b )

array  0 => string "a" (length=1)  1 => string "b" (length=1)array  0 => string "a" (length=1)  1 => string "b" (length=1)  2 => string "c" (length=1)  3 => string "b" (length=1)
++++++++++++++++++++++++++++++++++++++++++ 
echo "4 <br />";
$a = array(	0 => "a",	1 => "b");
$b = array(	0 => "c",	1 => "b");
$c = $a + $b;
print_r($c);
echo "<br />";
print_r(array_merge($a, $b));
输出:
Array ( [0] => a [1] => b ) 
Array ( [0] => a [1] => b [2] => c [3] => b )

array  0 => string "a" (length=1)  1 => string "b" (length=1)array  0 => string "a" (length=1)  1 => string "b" (length=1)  2 => string "c" (length=1)  3 => string "b" (length=1)
 

对多个数组合并去重技巧

$a = array("1001","1002");$b = array("1002","1003","1004");$c = array("1003","1004","1005");$d = count(array_flip($a) + array_flip($b) + array_flip($c));


声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。