PHP 배열 교차 및 결합의 지연 계산 PHP에서는 생성기를 사용하여 배열 교차 및 결합의 지연 계산을 구현하여 필요할 때까지 결과 계산을 지연할 수 있습니다. 교차: 배열 요소가 다음과 같은 경우에만 array_intersect_lazy() 생성기를 사용하세요. 그런 다음에만 반복하고 출력합니다. Union: array_union_lazy() 생성기를 사용하여 두 배열을 반복하고 결과에 출력하여 중복 요소를 필터링합니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!