array_udiff 함수를 사용하여 PHP에서 배열 차이를 수행하는 방법(비교 함수를 사용자 정의할 수 있음)

WBOY
풀어 주다: 2023-06-26 13:36:01
원래의
859명이 탐색했습니다.

PHP에서 배열은 매우 일반적으로 사용되는 데이터 유형이며, 배열의 연산 및 처리에도 매우 중요합니다. 배열을 처리할 때 여러 배열을 비교하고 차이점을 찾는 등의 작업을 수행해야 하는 경우가 많습니다.

PHP는 배열에 대한 많은 함수를 제공합니다. array_udiff() 함수는 여러 배열을 비교하고 차이 배열을 반환할 수 있습니다. 이번 글에서는 array_udiff() 함수의 사용법과 비교 함수를 커스터마이징하여 배열 차이를 수행하는 방법을 자세히 소개하겠습니다.

1. array_udiff() 함수의 기본 사용법

array_udiff() 함수의 기본 구문은 다음과 같습니다.

array array_udiff ( array $array1 , array $array2 [, array $... ], callable $value_compare_func )
로그인 후 복사

그 중 $array1, $array2 및 후속 $... 매개 변수는 비교 대상이 되는 여러 배열입니다. $ value_compare_func는 사용자 정의 비교 함수입니다.

이 함수의 반환값은 배열인데, $array1 배열의 값이 다른 배열과 다르다는 것을 나타냅니다.

다음은 array_udiff() 함수를 사용하는 방법을 보여주는 간단한 예입니다.

<?php
function compare($a, $b){
    if($a === $b){ //值相等
        return 0;
    }
    return ($a > $b) ? 1 : -1;
}

$array1 = array(1, 2, 3, 4, 5);
$array2 = array(5, 6, 7, 8, 9);

$result = array_udiff($array1, $array2, 'compare');
print_r($result);
?>
로그인 후 복사

위 코드는 1, 2, 3, 4를 포함하는 배열 $result를 출력합니다. 이 값은 $array1에 존재하지만, in $array2에 존재하지 않습니다. 이 결과는 우리가 상상한 것과 같습니다. $array1과 $array2 배열의 값은 5뿐이므로 차이 세트는 5를 제외한 $array1의 모든 요소여야 합니다.

2. 사용자 정의 비교 함수 구현

array_udiff() 함수를 사용할 때 두 요소가 동일한지 비교하는 데 사용되는 비교 함수를 사용자 정의해야 합니다.

비교 함수 정의는 다음 조건을 충족해야 합니다.

  1. 함수의 반환 값은 정수 값이어야 합니다.
  2. 정수 값은 두 요소 간의 크기 관계를 나타냅니다.

    • $ a가 $b보다 큰 경우 함수는 1과 같은 양의 정수(0보다 큰 숫자)를 반환해야 합니다.
    • $a가 $b보다 작은 경우 함수는 음의 정수(0보다 작은 숫자)를 반환해야 합니다. 0보다)(예: -1)
    • $a가 $b와 같으면 함수는 0을 반환해야 합니다.

실제 상황에 따라 비교 함수를 작성할 수 있습니다. 예를 들어 다음 함수를 사용하여 두 문자열의 길이를 비교할 수 있습니다.

function compare_length($a, $b){
    $len_a = strlen($a);
    $len_b = strlen($b);
    if($len_a === $len_b){ //值相等
        return 0;
    }
    return ($len_a > $len_b) ? 1 : -1;
}
로그인 후 복사

위의 Compare_length() 함수에서는 strlen( ) 함수를 사용하여 $a와 $b의 길이를 얻은 다음 두 길이를 비교하고 해당 값을 반환합니다.

물론, 비교 함수가 반드시 요소의 값에만 관련되는 것은 아닙니다. 배열에 포함된 객체의 특정 속성 등 다른 속성을 기반으로 비교할 수도 있습니다. 이는 다음과 같이 작성되어야 합니다. 실제 상황에.

비교 함수를 사용자 정의한 후 array_udiff() 함수를 사용하여 배열 차이를 수행할 수 있습니다. 예를 들어, 다음과 같은 두 개의 배열이 있습니다.

$array1 = array('hello', 'world', 'foo', 'bar');
$array2 = array('world', 'bar', 'php');
로그인 후 복사

$array1에서 $array2와 다른 요소를 찾고 싶습니다. 다음 코드를 사용할 수 있습니다.

function compare_in_array($a, $b){
    if(in_array($a, $b)){ //值在另一个数组中存在
        return 0;
    }
    return ($a > $b) ? 1 : -1;
}

$result = array_udiff($array1, $array2, 'compare_in_array');
print_r($result);
로그인 후 복사

비교 함수 Compare_in_array()에서 다음과 같습니다. $a가 $b 배열에 존재하는지 판단하므로 $array2와 동일한 값을 갖는 요소는 배열 차이에서 제외됩니다.

3. 결론

array_udiff() 함수를 사용하면 여러 배열을 쉽게 비교하고 구별할 수 있습니다. 비교 함수를 맞춤화하면 필요에 따라 요소의 비교 방법을 정의하고 배열을 보다 유연하게 처리할 수 있습니다.

비교 함수를 사용자 정의할 때 반환 값이 정수라는 요구 사항을 충족해야 하며 실제 비교 논리는 필요에 따라 작성되어야 한다는 점에 유의해야 합니다.

위 내용은 array_udiff 함수를 사용하여 PHP에서 배열 차이를 수행하는 방법(비교 함수를 사용자 정의할 수 있음)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿