Heim  >  Artikel  >  Backend-Entwicklung  >  PHP führt zwei geordnete Array-Fälle zusammen

PHP führt zwei geordnete Array-Fälle zusammen

墨辰丷
墨辰丷Original
2018-05-16 17:43:111761Durchsuche

Dieser Artikel stellt hauptsächlich vor, wie man zwei geordnete Arrays in PHP zusammenführt. Ich hoffe, dass er für alle hilfreich ist.

Der Fall ist 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));

Laufendes Ergebnis:

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

Testergebnisse:

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

Verwandte Empfehlungen:

Analyse der Methode zum Zusammenführen zweier geordneter Arrays in PHP

Java hat Analyse der ordinalen Array-Datenstruktur und des binären Suchalgorithmus

Einführung in die Methode zum Ermitteln des minimalen Absolutwerts in einem geordneten Array mit PHP

Das obige ist der detaillierte Inhalt vonPHP führt zwei geordnete Array-Fälle zusammen. 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