zoukankan      html  css  js  c++  java
  • PHP数组合并的常见问题

    一维数组的合并
    <?php
      $arr1=array("a","b","c");
      $arr2=array("c","d","e");
    
      $myarray=array_merge($arr1,$arr2);
      print_r($myarray);
    
      $myarray=array_unique($myarray);
    
      print_r($myarray);
    ?> 
     二维数组的合并 PHP 中的 array_merge_recursive() 函数可以实现 将一个或多个数组的元素的合并起来,一个数组中的值附加在前一个数组的后面。并返回作为结果的数组。 当有重复的键名时,值不会被覆盖,而是将多个相同键名的值递归组成一个数组。
    array_merge_recursive(array1,array2,array3...)
    
    
    
    参数说明 array1 必需。输入的第一个数组。 array2 必需。输入的第二个数组。 array3 可选。可指定的多个输入数组。 例如:
    <?php
      $a1=array("a"=>"Horse","b"=>"Dog");
      $a2=array("c"=>"Cow","b"=>"Cat");
      print_r(array_merge_recursive($a1,$a2));
    ?> 

    输出:
    Array ( 
      [a] => Horse 
      [b] => Array ( 
        [0] => Dog 
        [1] => Cat ) 
      [c] => Cow 
    ) 
    注:array_merge() 函数也可以实现,与 array_merge_recursive()函数不同是,如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的)。如果数组是数字索引的,则键名会以连续方式重新索引。

    把一个二维数组合并成一个一位数组

    <?php 
    $arr = array(
      '0' => array('1','2'),
      '1' => array('2','3'),
      '2' => array('3','4'),
      '3' => array('4','5'),
      '4' => array('5','6'),
    );
    ?>
    得到一个$new_arr = array('1','2','2','3','3','4','4','5','5','6');

    //方法一:
    $res = array();
    array_walk($arr,function($item,$key) use (&$res){
      $res = array_merhe($res,$item);
    });
    var_dump($res);
    //方法二:
    $res = array();
    foreach($arr as $item){
      $res = array_merge($res,$item);
    }
    var_dump($res);
    //方法三:
    $res = array();
    array_walk_reursive($arr,function($item,$key) use (&$res){
      $res[] = $item;
    });
    var_dump($res);
    
    
    

     三种方法从消耗时间比较:

      方法一消耗时间最长

      方法三消耗时间最短

  • 相关阅读:
    LeetCode18. 四数之和
    15. 三数之和
    LeetCode202. 快乐数
    LeetCode1. 两数之和
    LeetCode349. 两个数组的交集
    LeetCode242. 有效的字母异位词
    VSCode运行时弹出powershell
    关于cin, cin.get(), getchar(),getline()的字符问题
    剑指 Offer 27. 二叉树的镜像
    BFS zoj 1649
  • 原文地址:https://www.cnblogs.com/qhorse/p/4894299.html
Copyright © 2011-2022 走看看