首页 > 编程 > PHP > 正文

PHP实现合并两个有序数组的方法讲解

2020-03-22 17:25:36
字体:
来源:转载
供稿:网友
这篇文章主要介绍了PHP实现合并两个有序数组的方法,结合实例形式分析了php针对数组的合并、遍历、排序、去重等常见操作技巧,需要的朋友可以参考下

本文实例讲述了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教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表