Heim  >  Artikel  >  Backend-Entwicklung  >  Analyse der Methode zum Zusammenführen zweier geordneter Arrays in PHP

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

小云云
小云云Original
2017-12-09 10:03:501474Durchsuche

Dieser Artikel stellt hauptsächlich die Methode zum Zusammenführen zweier geordneter Arrays in PHP vor. Er analysiert gängige Betriebstechniken wie das Zusammenführen, Durchlaufen, Sortieren und Deduplizieren von Arrays in Form von Beispielen . Ich hoffe, es kann jedem helfen.

$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 Ja finden , wird das zusammengeführte Array nicht wiederholt. 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]=>(3) [3]=> (5) [5]=> int(1) [6]=>(3) [8]=> (7) } array(5) { [0]=> int(2) [2]=> 4]=> int(5) } array(7) { [0]=> ; int(4) [4]=>
array(10) { [0]=> int(1) [1]=> ]=> int(5) [5]=> int(2) [7]=> ]=> int(7) } array(5) { [0]=>(1) [1]=> int(4) [4]=> int(5) } array(7) { [0]=>(1) [1]=> [3]=> int(4) [4]=>
array(8) { [0]=> int(1) ["a"]=> int(2) ["b"]=> int(3) [1]=> int(5) [2]=> int(1) ["d"]=> ) { [0]=> int(1) ["a"]=> ]=> int(5) ["d"]=>

Verwandte Empfehlungen:

php-Merge-Array-Funktion array_merge()

php-Methode zum Zusammenführen von Arrays und Beibehalten von Schlüsselwerten Einführung

So führen Sie Arrays in PHP zusammen

Das obige ist der detaillierte Inhalt vonAnalyse der Methode zum Zusammenführen zweier geordneter Arrays in PHP. 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