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
其实原理都一样:
都是以长度较长的作为遍历的基准,然后交叉插入新的数组中,在循环过程中需要判断是否会下标越界