>백엔드 개발 >PHP 튜토리얼 >PHP에서 배열 교차 및 합집합의 지연 계산 구현

PHP에서 배열 교차 및 합집합의 지연 계산 구현

WBOY
WBOY원래의
2024-05-01 08:54:021070검색

PHP 배열 교차 및 결합의 지연 계산 PHP에서는 생성기를 사용하여 배열 교차 및 결합의 지연 계산을 구현하여 필요할 때까지 결과 계산을 지연할 수 있습니다. 교차: 배열 요소가 다음과 같은 경우에만 array_intersect_lazy() 생성기를 사용하세요. 그런 다음에만 반복하고 출력합니다. Union: array_union_lazy() 생성기를 사용하여 두 배열을 반복하고 결과에 출력하여 중복 요소를 필터링합니다.

PHP에서 배열 교차 및 합집합의 지연 계산 구현

PHP에서 배열 교집합 및 합집합의 지연 계산 구현

PHP에서는 배열 교집합 및 합집합 처리가 일반적인 작업입니다. 일반적으로 이러한 작업을 구현하려면 array_intersect()array_merge() 함수를 사용합니다. 그러나 이로 인해 결과가 즉시 계산되므로 특히 대규모 배열의 경우 성능 문제가 발생할 수 있습니다.

지연 계산을 사용하면 결과가 실제로 필요할 때까지 계산을 지연할 수 있어 이 문제를 해결할 수 있습니다. 생성기를 사용하면 느리게 계산된 배열 교차점과 결합체를 쉽게 구현할 수 있습니다.

Implementation

Intersection

function array_intersect_lazy($array1, $array2) {
    foreach ($array1 as $key => $value) {
        if (isset($array2[$key]) && $value === $array2[$key]) {
            yield $value;
        }
    }
}

Union

function array_union_lazy($array1, $array2) {
    foreach ($array1 as $key => $value) {
        yield $value;
    }

    foreach ($array2 as $key => $value) {
        if (!isset($array1[$key])) {
            yield $value;
        }
    }
}

Practical example

$array1 = ['foo', 'bar', 'baz'];
$array2 = ['bar', 'qux', 'quux'];

foreach (array_intersect_lazy($array1, $array2) as $value) {
    echo "$value\n";
}

// 输出:
// bar

foreach (array_union_lazy($array1, $array2) as $value) {
    echo "$value\n";
}

// 输出:
// foo
// bar
// baz
// qux
// quux

이 생성기를 사용하면 전체 결과 계산이 완료될 때까지 기다리지 않고 직접 교차점이나 합집합을 반복하고 인쇄할 수 있습니다. 이는 대규모 어레이의 성능을 크게 향상시킬 수 있습니다.

위 내용은 PHP에서 배열 교차 및 합집합의 지연 계산 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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