Heim  >  Artikel  >  Backend-Entwicklung  >  Eine Erklärung, wie man zwei geordnete Arrays in PHP zusammenführt

Eine Erklärung, wie man zwei geordnete Arrays in PHP zusammenführt

jacklove
jackloveOriginal
2018-07-06 17:54:401517Durchsuche

In diesem Artikel wird hauptsächlich die Methode zum Zusammenführen zweier geordneter Arrays in PHP vorgestellt und die gängigen Betriebstechniken von PHP zum Zusammenführen, Durchlaufen, Sortieren, Deduplizieren usw. anhand von Beispielen analysiert

Das Beispiel in diesem Artikel beschreibt die Methode zum Zusammenführen zweier geordneter Arrays in PHP. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

$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));

Laufergebnisse:

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
)

Aufmerksame Leser sollten entdeckt haben, dass die zusammengeführten Arrays nicht dupliziert sind. Im Folgenden wird die Methode der Deduplizierung nach dem Zusammenführen von Arrays vorgestellt:

1. Deduplizierung einzelner Arrays

array_unique($arrTest)

2. Deduplizierung mehrerer Arrays

array_keys(array_flip($arr1)+array_flip($arr2))

Testbeispiel:

$arr1 = array(1,2,3,4,5);
$arr2 = array(1,2,3,6,7);
$arr3 = array(&#39;0&#39;=>1,&#39;1&#39;=>2,&#39;2&#39;=>3,&#39;3&#39;=>4,&#39;4&#39;=>5);
$arr4 = array(&#39;0&#39;=>1,&#39;1&#39;=>2,&#39;2&#39;=>3,&#39;3&#39;=>6,&#39;4&#39;=>7);
$arr5 = array(&#39;0&#39;=>1,&#39;a&#39;=>2,&#39;b&#39;=>3,&#39;c&#39;=>4,&#39;4&#39;=>5);
$arr6 = array(&#39;0&#39;=>1,&#39;a&#39;=>2,&#39;c&#39;=>3,&#39;d&#39;=>6,&#39;4&#39;=>7);
var_dump(array_merge($arr1, $arr2));
var_dump($arr1+$arr2);
var_dump(array_keys(array_flip($arr1)+array_flip($arr2)));
echo &#39;<br>&#39;;
var_dump(array_merge($arr3, $arr4));
var_dump($arr3+$arr4);
var_dump(array_keys(array_flip($arr3)+array_flip($arr4)));
echo &#39;<br>&#39;;
var_dump(array_merge($arr5, $arr6));
var_dump($arr5+$arr6);

Laufergebnis:

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) }

Artikel, die Sie interessieren könnten:

Detaillierte Erklärung von Klassen und Objekten in PHP

Verwenden von Passport in Laravel 5.5 Erläuterung der Methoden zur Implementierung der Auth-Authentifizierung

Leistungsoptimierungstools in PHP, die Sie möglicherweise übersehen: Generatorbezogene Inhalte

Das obige ist der detaillierte Inhalt vonEine Erklärung, wie man zwei geordnete Arrays in PHP zusammenführt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn