来源:3-5 PHP自身能力性能测试之代码测试

_SnoW

2014-10-08 21:48

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

写回答 关注

4回答

  • 洪炉百炼生
    2014-11-10 12:00:07
    <?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
    )


  • 洪炉百炼生
    2014-11-10 11:54:18

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

  • 跌落尘层的王者
    2014-10-19 13:43:44

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

  • youxianbo
    2014-10-09 15:42:54

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

    搁浅ing

    你说的对 php代码用的是in_array()所以必须用array_unique

    2015-08-20 11:50:05

    共 4 条回复 >

性能优化之PHP优化

带你打造高速高效的PHP项目,由浅入深带你进一步探索php优化项目

37103 学习 · 109 问题

查看课程

相似问题

回答 2

回答 1

回答 2

回答 2

回答 1