>  기사  >  백엔드 개발  >  PHP에서 두 배열의 교차점을 삭제하는 방법

PHP에서 두 배열의 교차점을 삭제하는 방법

PHPz
PHPz원래의
2023-04-19 11:35:55609검색

PHP 프로그래밍에서는 특히 여러 배열의 교차점을 처리해야 할 때 두 배열의 교차점을 삭제하는 문제에 직면하는 것이 매우 일반적입니다. 이 기사에서는 두 배열 간의 교차 부분을 삭제하는 간단하고 실용적인 방법을 소개합니다.

1. 문제 설명

두 개의 배열 $A와 $B가 각각 있다고 가정합니다.

$A = array(1,2,3,4,5,6);

$B = array(4 , 5,7,8,9,10);

요구 사항은 $A와 $B의 모든 요소만 유지하고 두 배열의 교집합을 포함하지 않는 것입니다. 즉, 결과 배열은 다음과 같아야 합니다.

$ 결과 = array( 1,2,3,6,7,8,9,10);

그렇다면 어떻게 달성할 수 있을까요? 다음에서 하나씩 소개하겠습니다.

2. 방법 1

먼저 PHP에서 array_diff 함수를 사용하여 배열 요소의 차이 연산을 구현할 수 있습니다. 코드는 다음과 같습니다.

$Result = array_merge(array_diff($A, $B), array_diff ($B , $A));

위 코드에서 array_diff($A, $B)는 $A 배열에는 있지만 $B 배열에는 없는 요소를 필터링한다는 의미입니다. A)는 $B 배열의 요소를 필터링하지만 $A 배열의 요소는 필터링하지 않음을 의미합니다. 그런 다음 array_merge 함수를 사용하여 두 개의 결과 배열을 결합합니다. 이 방법은 간단해 보이지만 실제로는 다음 사항에서 볼 수 있듯이 강력하지 않습니다.

  1. 배열에 동일한 요소가 여러 개 있는 상황을 처리할 수 없습니다. 왜냐하면 두 배열을 병합할 때 실제로는 동일한 요소가 병합되었기 때문에 중복을 제거할 수 없기 때문입니다.
  2. 일관되지 않은 요소 유형을 처리할 수 없습니다. 예를 들어, $A에는 'hello'라는 문자열 유형 요소가 있지만 $B에는 없지만 최종 출력 결과 배열이 모든 요소의 합집합이기를 바라면 array_merge 함수를 사용할 때 오류가 보고됩니다.

따라서 이러한 문제를 더 잘 피하려면 더 강력한 방법을 사용하여 배열 요소의 교차 부분을 삭제해야 합니다.

3. 방법 2

다음으로 배열의 각 요소를 반복하고 프로세스에서 중복 제거 및 필터링 작업을 수행할 수 있습니다. 코드는 다음과 같습니다.

$Result = array();

foreach($A as $value){

if(!in_array($value, $B)){
    $Result[] = $value;
}

}

foreach($B as $value){

if(!in_array($value, $Result)){
    $Result[] = $value;
}

}

위에서 코드, 먼저 최종 결과 배열을 나타내는 빈 배열 $Result를 정의합니다. 그런 다음 두 개의 foreach 루프를 사용하여 $A 및 $B의 각 요소를 순회합니다. 이 과정에서 in_array 함수를 사용하여 현재 요소가 $B에 나타나는지와 같이 다른 배열에 나타나는지 확인합니다. 이전에 나타나지 않으면 $Result에 추가됩니다. 최종 $Result 배열은 두 배열의 모든 요소를 ​​합친 것입니다.

이 방법을 사용하면 다음과 같은 장점이 있습니다.

  1. 요소가 새 배열에 하나씩 추가되므로 배열에 동일한 요소가 여러 개 있는 상황을 처리할 수 있습니다.
  2. in_array 함수를 통해 요소의 값을 하나씩 비교하므로 일관성이 없는 요소 유형을 처리할 수 있습니다.
  3. 배열 크기가 작을수록 효율성이 높아집니다.

4. 요약

PHP에서 이 기사에서는 배열 교차 문제를 처리하는 두 가지 방법, 즉 array_diff 함수를 사용하고 루프 순회 필터링을 소개합니다. 두 방법 모두 올바른 결과를 얻을 수 있지만 루프 순회를 사용하는 방법이 더 강력하고 더 많은 엣지 케이스를 처리할 수 있으므로 학습할 가치가 있습니다.

위 내용은 PHP에서 두 배열의 교차점을 삭제하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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