zoukankan      html  css  js  c++  java
  • PHP中array_merge()函数与array+array、array_merge_recursive() 数组合并方法的区别

    在PHP中可以使用array_merge函数、两个数组相加array+array的方式和array_merge_recursive()进行数组合并,但三者效果并不相同,下面为大家介绍三者具体的使用区别. 都可多个数组合并

    区别如下:

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

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

    该函数与array_merge_recursive() 函数之间的不同是在处理两个或更多个数组元素有相同的键名的情况。array_merge_recursive() 不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组。

    例子1:

    代码:

    $arr1 = ['PHP', 'apache'];
    $arr2 = ['PHP', 'MySQl', 'HTML', 'CSS'];
    $mergeArr = array_merge($arr1, $arr2);
    $plusArr = $arr1 + $arr2;
    var_dump($mergeArr);

    var_dump($recurArr);
    var_dump($plusArr);

    结果
    $mergeArr:

    array (size=6)
      0 => string 'PHP' (length=3)
      1 => string 'apache' (length=5)
      2 => string 'PHP' (length=3)
      3 => string 'MySQl' (length=5)
      4 => string 'HTML' (length=4)
      5 => string 'CSS' (length=3)

    $recurArr:

    array (size=6)
      0 => string 'PHP' (length=3)
      1 => string 'apache' (length=5)
      2 => string 'PHP' (length=3)
      3 => string 'MySQl' (length=5)
      4 => string 'HTML' (length=4)
      5 => string 'CSS' (length=3)

    $plusArr

    array (size=4)
      0 => string 'PHP' (length=3)
      1 => string 'apache' (length=5)
      2 => string 'HTML' (length=4)
      3 => string 'CSS' (length=3

    例子2:

    代码:

    $arr1 = ['PHP', 'a'=>'MySQl'];
    $arr2 = ['PHP', 'MySQl', 'a'=>'HTML', 'CSS'];
    $mergeArr = array_merge($arr1, $arr2);
    $plusArr = $arr1 + $arr2;
    var_dump($mergeArr);

    var_dump($recurArr);
    var_dump($plusArr);

    结果
    $mergeArr:

    array (size=5)
      0 => string 'PHP' (length=3)
      'a' => string 'HTML' (length=4)
      1 => string 'PHP' (length=3)
      2 => string 'MySQl' (length=5)
      3 => string 'CSS' (length=3)

    $recurArr
    array (size=6)
      0 => string 'PHP' (length=3)
      'a' =>
          array(size=2)
               0 => string 'MYSQl'(length=5)
               1 => string 'HTML'(length=5)
      1 => string 'PHP' (length=3)
      2 => string 'MySQl' (length=5)
      3 => string 'CSS' (length=3)

    $plusArr

    array (size=4)
      0 => string 'PHP' (length=3)
      1 => string 'a=>MySQl'' (length=5)
      2 => string 'a=>HTML'' (length=5)
      3 => string 'CSS' (length=3)

    例子3:

    代码:

    $arr1 = ['PHP', 'a'=>'MySQl','6'=>'CSS'];
    $arr2 = ['PHP', 'MySQl', 'a'=>'HTML', 'CSS'];
    $mergeArr = array_merge($arr1, $arr2);

    $recurArr = array_merge_recursive($arr1,$arr2);
    $plusArr = $arr1 + $arr2;
    var_dump($mergeArr);

    var_dump($recurArr);
    var_dump($plusArr);

    结果:

    $mergeArr

    array (size=6)
      0 => string 'PHP' (length=3)
      'a' => string 'HTML' (length=4)
      1 => string 'CSS' (length=3)
      2 => string 'PHP' (length=3)
      3 => string 'MySQl' (length=5)
      4 => string 'CSS' (length=3)$recurArr

    array (size=6)
      0 => string 'PHP' (length=3)
      'a' =>
          array(size=2)
               0 => string 'MYSQl'(length=5)
               1 => string 'HTML'(length=5)
      1 => string 'CSS' (length=3)
      2 => string 'PHP' (length=3)
      3 => string 'MySQl' (length=5)
      4 => string 'CSS' (length=3)

    $plusArr

    array (size=5)
      0 => string 'PHP' (length=3)
      'a' => string 'MySQl' (length=5)
      6 => string 'CSS' (length=3)
      1 => string 'MySQl' (length=5)
      2 => string 'CSS' (length=3)

    相信通过上边三个例子大家已经非常清楚array_merge()函数和array+array数组相加的区别了吧。

  • 相关阅读:
    ThinkPHP 3.2.2 实现持久登录 ( 记住我 )
    Java实现 LeetCode 20 有效的括号
    Java实现 LeetCode 20 有效的括号
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 17 电话号码的字母组合
  • 原文地址:https://www.cnblogs.com/1301694f/p/10048662.html
Copyright © 2011-2022 走看看