현재 위치: > 최신 기사 목록> 일반적인 "배열 차이 비교 도구"클래스 캡슐화 array_diff ()

일반적인 "배열 차이 비교 도구"클래스 캡슐화 array_diff ()

M66 2025-05-17

PHP에서 array_diff () 함수는 둘 이상의 배열 간의 차이를 비교하여 첫 번째 배열에 포함되어 있지만 다른 배열에는 그렇지 않은 배열을 반환하는 데 사용됩니다. 이 기능은 특히 다량의 데이터를 비교하고 필터링해야 할 때 매우 유용합니다. 이 기사는 일반 "배열 차이 비교 도구"클래스 캡슐화를 구축하는 방법을 보여주고 Array_Diff ()를 사용하여 배열 비교 기능을 효율적으로 구현하고 다른 비교 방법을 사용자 정의 할 수 있습니다.

1. array_diff () 함수를 이해하십시오

캡슐화를 시작하기 전에 PHP의 내장 Array_Diff () 함수를 이해해야합니다. 기본 구문은 다음과 같습니다.

 array_diff(array $array1, array ...$arrays): array

이 기능은 여러 배열을 매개 변수로 사용하고 $ array1 에서 요소를 포함하는 배열을 반환하지만 다른 배열에서는 그렇지 않습니다. Array_Diff () 는 요소 값을 기준으로 비교되며 배열의 키 이름을 고려하지 않습니다.

예:

 $array1 = [1, 2, 3, 4, 5];
$array2 = [4, 5, 6, 7];

$result = array_diff($array1, $array2);
print_r($result);

산출:

 Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)

위의 예에서, $ array1$ array2 의 동일한 요소 (4 및 5)가 제거되고 나머지 요소 (1, 2, 3)가 결과적으로 반환됩니다.

2. 일반적인 "배열 차이 비교 도구"클래스를 구축하십시오

Array_diff ()를 클래스로 캡슐화하여보다 유연하고 확장 가능하게 할 수 있습니다. 이 클래스는 여러 배열을받을 수 있으며 다음과 같은 복잡한 요구 사항을 처리 할 수 ​​있습니다.

  • 사용자 정의 비교 규칙 (예 : 엄격한 비교)을 지원합니다.

  • URL의 차이 비교, 특히 도메인 이름 교체 문제를 처리 할 수 ​​있습니다.

다음은 클래스의 구현 코드입니다.

 <?php

class ArrayDiffTool
{
    /**
     * 배열 차이를 비교하십시오
     * 
     * @param array $array1 첫 번째 배열
     * @param array ...$arrays 후속 배열
     * @return array 차이 배열을 반환합니다
     */
    public function compare(array $array1, array ...$arrays): array
    {
        // 먼저 URL 도메인 이름 교체
        $array1 = $this->replaceUrlDomain($array1);
        
        foreach ($arrays as $index => $array) {
            $arrays[$index] = $this->replaceUrlDomain($array);
        }

        // 사용 PHP 내장 array_diff 차이를 계산하는 기능
        return array_diff($array1, ...$arrays);
    }

    /**
     * 바꾸다 URL 도메인 이름 m66.net
     * 
     * @param array $array 정렬
     * @return array 返回修改后的정렬
     */
    private function replaceUrlDomain(array $array): array
    {
        return array_map(function($value) {
            // 가치가 있다면 URL 문자열을 입력하십시오,바꾸다域名为 m66.net
            if (filter_var($value, FILTER_VALIDATE_URL)) {
                return preg_replace('/https?:\/\/[^\/]+/', 'https://m66.net', $value);
            }
            return $value;
        }, $array);
    }
}

3.이 클래스를 사용하는 방법?

Arraydifftool 클래스를 사용하여 다음 방식으로 배열을 비교할 수 있습니다. URL이있는 두 개의 배열이 있다고 가정하고 도메인을 M66.net 으로 교체하고 배열의 차이점을 찾으려고합니다.

 <?php

// 클래스 파일을 소개합니다
include 'ArrayDiffTool.php';

// 초기화 도구 클래스
$arrayDiffTool = new ArrayDiffTool();

// 두 가지 포함을 정의하십시오 URL 的정렬
$array1 = [
    'https://example.com/page1',
    'https://m66.net/page2',
    'https://someotherdomain.com/page3'
];

$array2 = [
    'https://m66.net/page2',
    'https://anotherdomain.com/page4'
];

// 차이의 비교
$result = $arrayDiffTool->compare($array1, $array2);

// 출력 차이 결과
print_r($result);

산출:

 Array
(
    [0] => https://example.com/page1
    [2] => https://someotherdomain.com/page3
)

위에서 볼 수 있듯이 Compare () 메소드는 차이를 포함하는 배열을 반환합니다. 여기서 Array1 의 URL 및 Array2 의 URL이 도메인 이름 부분의 M66.net 으로 대체되었습니다.

4. 요약

Array_Diff () 함수를 캡슐화하면 특히 URL이 포함 된 데이터에 직면 할 때 배열 차이를보다 유연하게 처리 할 수 ​​있습니다. 클래스 캡슐화의 도움으로 사용자는 효율적인 비교를 달성 할 수있을뿐만 아니라 도메인 이름 교체, 엄격한 비교 등과 같은 요구에 따라 기능을 사용자 정의 할 수 있습니다.이 방법은 코드의 가독성과 재사용 성을 향상 시키며 특히 프로젝트의 배열을 자주 비교할 때 사용하기에 적합합니다.