zoukankan      html  css  js  c++  java
  • PHP数组合并+与array_merge的区别分析 & 对多个数组合并去重技巧

    PHP中两个数组合并可以使用+或者array_merge,但之间还是有区别的,而且这些区别如果了解不清楚项目中会要命的!

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

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

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

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

    $a = array('a', 'b');
    $b = array('c', 'd');
    $c = $a + $b;
    var_dump($a);
    var_dump(array_merge($a, $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 'd' (length=1)
    
    ++++++++++++++++++++++++++++++++++++++++++  
      
    $a = array(
    	0 => 'a',
    	1 => 'b'
    );
    $b = array(
    	0 => 'c',
    	1 => 'b'
    );
    $c = $a + $b;
    var_dump($c);
    var_dump(array_merge($a, $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;
    var_dump($c);
    var_dump(array_merge($a, $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(
    	0 => 'a',
    	1 => 'b'
    );
    $b = array(
    	'0' => 'c',
    	'1' => 'b'
    );
    $c = $a + $b;
    var_dump($c);
    var_dump(array_merge($a, $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));

    延伸阅读:

    PHP合并2个数字键数组的值

  • 相关阅读:
    两款命令行下的翻译工具: sdcv & translateshell
    谷歌语言标准中,C++成绝对的佼佼者 狼人:
    12个优秀的云计算操作系统 狼人:
    幻灯片在网页设计中应用的21个优秀案例 狼人:
    对Web开发人员有用的8个网站 狼人:
    网页设计师应向肖像画家吸取的11个理念 狼人:
    揭秘Facebook的系统架构 狼人:
    Chrome或取代Firefox成Ubuntu默认浏览器 狼人:
    Gnome 3.2 发布计划及新功能 狼人:
    MyFaces Core v2.0.7/2.1.1 发布,JSF框架 狼人:
  • 原文地址:https://www.cnblogs.com/52php/p/5659866.html
Copyright © 2011-2022 走看看