• php数组合并有哪三种方法


    php数组合并有哪三种方法

    一、总结

    一句话总结:array_merge();array_merge_recursive()‘+'号

    $a = array('color'=>'red',5,6); 
    $b = array('color'=>'blue','type'=>'fruit',6,7);  

    1、array_merge()方式合并数组的特点是什么?

    array_merge()合并数组会把前一个数组中关联形式数组的键值相同的覆盖,索引形式的则按键值顺序合并在一起)

    2、array_merge()方式合并数组和array_merge_recursive()合并数组的区别是什么?

    array_merge()合并数组会把前一个数组中关联形式数组的键值相同的覆盖,索引形式的则按键值顺序合并在一起

    array (size=6)
     'color' => string 'blue' (length=4)
     0 => int 5
     1 => int 6
     'type' => string 'fruit' (length=5)
     2 => int 6
     3 => int 7

    array_merge_recursive()函数会把键值相同的值以一个新的关联数组的形式返回,并以这个键值作为二维数组的键值,其他索引形式则不会受影响。

    array (size=6)
     'color' => 
     array (size=2)
      0 => string 'red' (length=3)
      1 => string 'blue' (length=4)
     0 => int 5
     1 => int 6
     'type' => string 'fruit' (length=5)
     2 => int 6
     3 => int 7

    3、‘+'号合并数组的霸道之处在哪里?

    使用‘+'号合并数组,是前面覆盖后面的,和array_merge()相反,而且它比array_merge()更狠,如果以索引形式出现的数组的内容,合并后如果键值相同也会覆盖掉!

    array (size=4)
     'color' => string 'red' (length=3)
     0 => int 5
     1 => int 6
     'type' => string 'fruit' (length=5)

    4、array_merge()方式合并数组和‘+'号合并数组的区别是什么?

    a、array_merge()后面覆盖前面,‘+'号前面覆盖后面

    b、array_merge()索引会按顺序排列(不会被覆盖),‘+'号索引前面会覆盖后面

    二、php数组合并有哪三种方法

    在此前合并数组我一直用的是array_merge()这个函数,但今天我百度了一下,原来还有‘+'号,

    array_merge_recursive() ,也是可以用来合并数组的,根据我的记忆,我把那道题写出来看一下:

     
    1
    2
    3
    4
    $a = array('color'=>'red',5,6); 
    $b = array('color'=>'blue','type'=>'fruit',6,7); 
    $arr = array_merge($a,$b); 
    var_dump($arr);
     
    1
    2
    3
    4
    5
    6
    7
    array (size=6)
     'color' => string 'blue' (length=4)
     0 => int 5
     1 => int 6
     'type' => string 'fruit' (length=5)
     2 => int 6
     3 => int 7

    要求是在不使用array_merge()的情况的得到相同的效果;

    array_merge()合并数组会把前一个数组中关联形式数组的键值相同的覆盖,索引形式的则按键值顺序合并在一起)

    1.先用array_merge_recursive()函数来合并一下:

    1
    2
    3
    4
    $a = array('color'=>'red',5,6);
    $b = array('color'=>'blue','type'=>'fruit',6,7);
    $arr = array_merge_recursive($a,$b);
    var_dump($arr);

    输出结果:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    array (size=6)
     'color' => 
     array (size=2)
      0 => string 'red' (length=3)
      1 => string 'blue' (length=4)
     0 => int 5
     1 => int 6
     'type' => string 'fruit' (length=5)
     2 => int 6
     3 => int 7

    从结果可以看出array_merge_recursive()函数会把键值相同的值以一个新的关联数组的形式返回,并以这个键值作为二维数组的键值,其他索引形式则不会受影响。

    比起array_merge()的话就不会出现后面的数组键和前一个相同就把前一个的值覆盖的情况了。

    2.再看下‘+'号合并数组的情况:

    1
    2
    3
    4
    $a = array('color'=>'red',5,6);
    $b = array('color'=>'blue','type'=>'fruit',6,7);
    $arr = $a+$b;
    var_dump($arr);

    输出结果:

    1
    2
    3
    4
    5
    array (size=4)
     'color' => string 'red' (length=3)
     0 => int 5
     1 => int 6
     'type' => string 'fruit' (length=5)

    从这个结果可以看出,使用‘+'号合并数组,是前面覆盖后面的,和array_merge()相反,而且它比array_merge()更狠,如果以索引形式出现的数组的内容,合并后如果键值相同也会覆盖掉!

     
  • 相关阅读:
    视频流媒体服务器网络硬盘录像机NVR接入/解码/转发能力解析
    流媒体服务器安装失败/程序启动错误等问题解决方案
    监控摄像头如何用作网络直播?
    数据库之单表查询
    数据库之表与表之间的关系
    数据库之完整性约束
    数据库之数据类型
    数据库之增删改查操作
    数据库之基本操作和存储引擎
    数据库之数据库基础及安装
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9545698.html
Copyright © 2020-2023  润新知