_SnoW
2014-10-08 21:48
你只合并了,没去重吧。bad.php合并去重了,good.php没去重呐。没用array_unique.
<?php
highlight_string(file_get_contents('index.php'));
$a = array(1,2,3,4,5,6,7,8,9);
$b = array(9,8,7,6,5,4,3,2,1);
print_r(array_merge($a,$b));
?>Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => 7
[7] => 8
[8] => 9
[9] => 9
[10] => 8
[11] => 7
[12] => 6
[13] => 5
[14] => 4
[15] => 3
[16] => 2
[17] => 1
)
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
array_merge 函数如果遇到重复的键都会后面的覆盖前面的
如果真的是这样,那么结果也是不对的,因为
1-》2 2-》4
1-》3 2-》5
这样合并是错误的,想要的结果是
1->2 2->4 3->3 4->5
如果这两个数组中有相同的数值键名:
<?php
$book1 = array('linux服务器配置与管理','PHP程序设计');
$book2 = array('服务器配置与管理','PHP');
$result = array_merge($book1,$book2);
print_r($result);
?>
结果是:
Array ( [0] => linux服务器配置与管理 [1] => PHP程序设计 [2] => 服务器配置与管理 [3] => PHP )
这时,如果数组中包含相同的数字键名,则后面的不会覆盖前面的值,而是后面的键值按顺序依次增加,
所以做完合并操作之后应该要调用array_unique函数
array_merge 函数如果遇到重复的键都会后面的覆盖前面的
性能优化之PHP优化
37103 学习 · 109 问题
相似问题