>  기사  >  백엔드 개발  >  PHP에서 두 개의 순서 배열을 병합하는 방법 분석

PHP에서 두 개의 순서 배열을 병합하는 방법 분석

小云云
小云云원래의
2017-12-09 10:03:501477검색

이 글은 주로 PHP에서 두 개의 정렬된 배열을 병합하는 방법을 소개합니다. 배열 병합, 순회, 정렬, 중복 제거 등을 위한 PHP의 일반적인 작동 기술을 예제 형식으로 분석합니다. 그것이 모두에게 도움이 되기를 바랍니다.

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

작업 결과:

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
)

주의깊은 독자라면 병합된 배열이 중복되지 않는다는 점을 알아차렸을 것입니다. 다음은 배열 병합 후 중복을 제거하는 방법을 소개합니다.

1. 단일 배열에서 중복 제거

array_unique($arrTest)array_unique($arrTest)

2. 多数组去重复

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

2. 여러 배열에서 중복 제거

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

테스트 예:

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

실행 결과:




array(10) { [0]=> [1]=> int(2) [2]=> int(3) [4]=> int(5) [6]=> int(2) [7]=> int(3) [8]=> int(6) [9]=> int(7) } 배열(5) > int(1) [1]=> int(2) [2]=> int(3) [4]=> ) { [0]=> int(1) [1]=> int(2) [2]=> int(4) [4]=> 5) [5]=> int(6) [6]=> int(7) }

array(10) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> > int(5) [5]=> int(1) [6]=> int(2) [7]=> int(6) [9]= > int(7) } array(5) { [0]=> int(1) [1]=> int(2) [2]=> 4) [4]=> int(5) } array(7) { [0]=> int(1) [1]=> int(2) [2]=> ]=> int(4) [4]=> int(5) [5]=> int(6) [6]=>

array(8) { [0]=> int(1) ["a"]=> int(2) ["b"]=> int(3) 3) [1]=> int(5) [2]=> int(1) ["d"]=> int(6) [3]=> int(7) } [0]=> int(1) ["a"]=> int(2) ["b"]=> int(3) ["c"]=> > int(5) ["d"]=>

관련 권장사항:

php 배열 병합 함수 array_merge()

php에서 배열을 병합하고 키 값을 유지하는 방법 소개

PHP에서 배열을 병합하는 방법

🎜🎜🎜

위 내용은 PHP에서 두 개의 순서 배열을 병합하는 방법 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.