Home >Backend Development >PHP Tutorial >An explanation of how to merge two ordered arrays in PHP
This article mainly introduces the method of merging two ordered arrays in PHP, and analyzes PHP's common operating techniques for array merging, traversal, sorting, deduplication, etc. in the form of examples. Friends in need can refer to it
The example in this article describes the method of merging two ordered arrays in PHP. Share it with everyone for your reference, the details are as follows:
$arr1 = array(1,2,3,4,5,6,7,8); $arr2 = array(3,4,5,7,9,10); //方法1 function 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; } //方法2 function 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));
Running results:
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] => 10 ) 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] => 10 )
Careful readers should have discovered that the merged arrays are not repeated. The following introduces the method of deduplicating arrays after merging them:
1. Deduplicating single arrays
array_unique($arrTest)
2. Multiple arrays Remove duplicates
array_keys(array_flip($arr1) array_flip($arr2))
Test example:
$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'=>5); $arr4 = array('0'=>1,'1'=>2,'2'=>3,'3'=>6,'4'=>7); $arr5 = array('0'=>1,'a'=>2,'b'=>3,'c'=>4,'4'=>5); $arr6 = array('0'=>1,'a'=>2,'c'=>3,'d'=>6,'4'=>7); 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);
Run results:
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) }
Explanation of the method of using Passport to implement Auth authentication in Laravel5.5
You may ignore it in PHP Performance optimization tool: Generator related content
The above is the detailed content of An explanation of how to merge two ordered arrays in PHP. For more information, please follow other related articles on the PHP Chinese website!