Maison > Article > développement back-end > Analyse de la méthode de fusion de deux tableaux ordonnés en PHP
Cet article présente principalement la méthode de fusion de deux tableaux ordonnés en PHP. Il analyse les techniques de fonctionnement courantes telles que la fusion, le parcours, le tri et la déduplication de tableaux en PHP sous forme d'exemples. . J'espère que cela peut aider tout le monde.
$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));
Résultats d'exécution :
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 )
Les lecteurs attentifs devraient trouver Oui , le tableau fusionné n'est pas dupliqué. Ce qui suit présente la méthode de déduplication après la fusion des tableaux :
1 Déduplication de tableaux uniques
array_unique($arrTest)
2.
array_keys(array_flip($arr1)+array_flip($arr2))
Exemple de test :
$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);
Résultat d'exécution :
array( 10) { [0]=> int(1) [1]=> (5) [5]=> int(1) [6]=> (7) } tableau(5) { [0]=> int(1) [1]=> 4]=> int(5) } tableau(7) { [0]=> ; int(4) [4]=> int(5) [5]=>
tableau(10) { [0]=> int(1) [1]=> int(2) [2]=> ]=> int(5) [5]=> int(1) [6]=> ]=> int(7) } tableau(5) { [0]=> int(1) [1]=> int(4) [4]=> int(5) } tableau(7) { [0]=> [3]=> int(4) [4]=> int(5) [5]=>tableau(8) { [0]=> int(1) ["a"]=> int(3) [1]=> int(5) [2]=> int(1) ["d"]=> ) { [0]=> int(1) ["a"]=> ]=> int(5) ["d"]=>
Recommandations associées :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!