本文实例讲述了PHP实现合并两个有序数组的方法。分享给大家供大家参考,具体如下:
$arr1 = array(1,2,3,4,5,6,7,8);$arr2 = array(3,4,5,7,9,10);//方法1function mergeOrderly1($arr1,$arr2){ $i=0;$j=0; $int = array(); while($i count($arr1) $j count($arr2)){ $int[] = $arr1[$i] $arr2[$j]?$arr1[$i++]:$arr2[$j++]; while($i count($arr1)){ $int[] = $arr1[$i++]; while($j count($arr2)){ $int[] = $arr2[$j++]; //$int = array_merge($int,array_slice($arr1,$i)); //$int = array_merge($int,array_slice($arr2,$j)); return $int;//方法2function mergeOrderly2($arr1,$arr2){ $arr = array();//定义最终数组容器 $arr2Num = count($arr2);//统计数组长度 $arr1Num = count($arr1); $i1 = 0;//数组1 的循环标记 $i2 = 0;//数组2 的循环标记 while($i1 $arr1Num || $i2 $arr2Num){//是否还需要合并 if($i1 $arr1Num $i2 $arr2Num){//当两个数组都没有到达末尾,情况一 if($arr1[$i1] $arr2[$i2]){//需要比较数组1和数组2,小的放入目标数组,并且标记+1 $arr[] = $arr2[$i2]; $i2++; }else{ $arr[] = $arr1[$i1]; $i1++; }elseif($i1 $arr1Num $i2 = $arr2Num){//数组2 已经到达末尾,而数组1还为到达,情况二 $arr[] = $arr1[$i1];//直接把数组1的内容插入到目标数组中 $i1++; }elseif($i2 $arr2Num $i1 = $arr1Num){//数组1已经到达末尾,而数组2还未到达,情况三 $arr[] = $arr2[$i2];//直接把数组2的内容插入到目标数组中 $i2++; return $arr;print_r(mergeOrderly1($arr1,$arr2));print_r(mergeOrderly2($arr1,$arr2));
运行结果:
Array [0] = 1 [1] = 2 [2] = 3 [3] = 3 [4] = 4 [5] = 4 [6] = 5 [7] = 5 [8] = 6 [9] = 7 [10] = 7 [11] = 8 [12] = 9 [13] = 10Array [0] = 1 [1] = 2 [2] = 3 [3] = 3 [4] = 4 [5] = 4 [6] = 5 [7] = 5 [8] = 6 [9] = 7 [10] = 7 [11] = 8 [12] = 9 [13] = 10)
细心的读者应该发现了,合并后的数组并没有去重复。下面介绍一下数组合并后去重复的方法:
1. 单数组去重复
array_unique($arrTest)
2. 多数组去重复
array_keys(array_flip($arr1)+array_flip($arr2))
测试示例:
$arr1 = array(1,2,3,4,5);$arr2 = array(1,2,3,6,7);$arr3 = array( 0 = 1, 1 = 2, 2 = 3, 3 = 4, 4 = $arr4 = array( 0 = 1, 1 = 2, 2 = 3, 3 = 6, 4 = $arr5 = array( 0 = 1, a = 2, b = 3, c = 4, 4 = $arr6 = array( 0 = 1, a = 2, c = 3, d = 6, 4 = var_dump(array_merge($arr1, $arr2));var_dump($arr1+$arr2);var_dump(array_keys(array_flip($arr1)+array_flip($arr2)));echo br var_dump(array_merge($arr3, $arr4));var_dump($arr3+$arr4);var_dump(array_keys(array_flip($arr3)+array_flip($arr4)));echo br var_dump(array_merge($arr5, $arr6));var_dump($arr5+$arr6);
运行结果:
array(10) { [0]= int(1) [1]= int(2) [2]= int(3) [3]= int(4) [4]= int(5) [5]= int(1) [6]= int(2) [7]= int(3) [8]= int(6) [9]= int(7) } array(5) { [0]= int(1) [1]= int(2) [2]= int(3) [3]= int(4) [4]= int(5) } array(7) { [0]= int(1) [1]= int(2) [2]= int(3) [3]= int(4) [4]= int(5) [5]= int(6) [6]= int(7) } array(10) { [0]= int(1) [1]= int(2) [2]= int(3) [3]= int(4) [4]= int(5) [5]= int(1) [6]= int(2) [7]= int(3) [8]= int(6) [9]= int(7) } array(5) { [0]= int(1) [1]= int(2) [2]= int(3) [3]= int(4) [4]= int(5) } array(7) { [0]= int(1) [1]= int(2) [2]= int(3) [3]= int(4) [4]= int(5) [5]= int(6) [6]= int(7) } array(8) { [0]= int(1) [ a ]= int(2) [ b ]= int(3) [ c ]= int(3) [1]= int(5) [2]= int(1) [ d ]= int(6) [3]= int(7) } array(6) { [0]= int(1) [ a ]= int(2) [ b ]= int(3) [ c ]= int(4) [4]= int(5) [ d ]= int(6) }您可能感兴趣的文章:详解php中的类与对象
Laravel5.5中利用Passport实现Auth认证的方法讲解
PHP中你可能忽略的性能优化利器:生成器的相关内容
以上就是PHP实现合并两个有序数组的方法讲解的详细内容,PHP教程
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答