>백엔드 개발 >PHP 튜토리얼 >PHP에서 여러 배열의 데카르트 곱을 계산하는 방법은 무엇입니까?

PHP에서 여러 배열의 데카르트 곱을 계산하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-14 12:15:02937검색

How to Calculate the Cartesian Product of Multiple Arrays in PHP?

여러 배열의 데카르트 곱: 포괄적인 솔루션

여러 배열을 처리할 때 이러한 배열의 가능한 모든 요소 조합을 포함하는 테이블을 생성해야 할 수도 있습니다. 반복을 피하면서 배열. 이 수학적 연산을 데카르트 곱이라고 합니다.

PHP에서 이 문제를 해결하려면 다음 함수 활용을 고려해 보세요.

function array_cartesian() {
    $_ = func_get_args();
    if(count($_) == 0)
        return array(array());
    $a = array_shift($_);
    $c = call_user_func_array(__FUNCTION__, $_);
    $r = array();
    foreach($a as $v)
        foreach($c as $p)
            $r[] = array_merge(array($v), $p);
    return $r;
}

$cross = array_cartesian(
    array('apples', 'pears',  'oranges'),
    array('steve', 'bob')
);

print_r($cross);

이 함수는 가변 길이 인수를 사용하며 각각은 배열을 나타냅니다. . 첫 번째 배열에서 요소를 선택하고 이를 나머지 배열의 가능한 모든 데카르트 곱과 결합하여 데카르트 곱을 반복적으로 계산합니다.

결과는 입력 배열의 모든 고유한 요소 조합을 포함하는 중첩 배열입니다. 주어진 예에서 두 배열의 데카르트 곱은 다음을 생성합니다.

Array 0            Array 1
apples             steve
apples             bob
pears              steve
pears              bob

이 솔루션은 2차원 배열에 효과적일 뿐만 아니라 확장하여 원하는 수의 배열을 처리할 수도 있습니다. 이는 PHP의 데카르트 곱 문제를 해결하는 간결하고 우아한 방법을 제공합니다.

위 내용은 PHP에서 여러 배열의 데카르트 곱을 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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