php交叉合并数组

如数组 array1 = array('a', 'b', 'c');

      array2 = array('1', '2', '3');

希望能实现结果 array3 = array('a', '1', 'b', '2', 'c', '3'); 这种效果,

方法一: 

 1     function cross_merge_array($arr1, $arr2)
 2     {
 3         $arr1 = array_values($arr1);
 4         $arr2 = array_values($arr2);
 5         $count = max(count($arr1), count($arr2));
 6         $arr = array();
 7         for ($i = 0; $i < $count; $i++) {
 8             if ($i < count($arr1)) $arr[] = $arr1[$i]; // 判断,避免下标越界
 9             if ($i < count($arr2)) $arr[] = $arr2[$i]; // 判断,避免下标越界
10         }
11         return $arr;
12     }

参考:https://segmentfault.com/q/1010000014216293

方法二:

 1 function cross_merge_array($arr1, $arr2)
 2 {
 3      $size = count($arr1) > count($arr22) ? count($arr1) : count($arr2); //取出元素最多的数
 4      $arr = array();
 5      for ($i = 0; $i < $count; $i++) {
 6      if ($i < count($arr1)) {
 7               array_push($arr, $arr1[$i]); //将数组压入新的变量
 8          }
 9 
10          if ($i < count($arr2)) {
11               array_push($arr, $arr2[$i]);//将数组压入新的变量
12          }
13      }
14      return $arr;
15 }          

参考:http://www.songlin51.com/archives/832.html

其实原理都一样:

       都是以长度较长的作为遍历的基准,然后交叉插入新的数组中,在循环过程中需要判断是否会下标越界

猜你喜欢

转载自www.cnblogs.com/tommy-huang/p/9050161.html