为了账号安全,请及时绑定邮箱和手机立即绑定

你只合并了,没去重吧。bad.php合并去重了,good.php没去重呐。没用array_unique.

正在回答

4 回答

<?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
)


0 回复 有任何疑惑可以回复我~

如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。

0 回复 有任何疑惑可以回复我~

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函数

0 回复 有任何疑惑可以回复我~

array_merge  函数如果遇到重复的键都会后面的覆盖前面的

2 回复 有任何疑惑可以回复我~
#1

javascript:

数字键名将会被重新编号,不会发生覆盖,请注意这一点.
2014-10-17 回复 有任何疑惑可以回复我~
#2

洪炉百炼生

那是字符串键名
2014-11-10 回复 有任何疑惑可以回复我~
#3

dqmore

数字键不会阿,不过我想问array_merge处理数字键跟字符串键,性能一样不,,
2014-11-27 回复 有任何疑惑可以回复我~
#4

搁浅ing

你说的对 php代码用的是in_array()所以必须用array_unique
2015-08-20 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信