> 백엔드 개발 > PHP 튜토리얼 > 다양한 길이의 여러 PHP 배열에서 가능한 모든 요소 조합을 효율적으로 생성하려면 어떻게 해야 합니까?

다양한 길이의 여러 PHP 배열에서 가능한 모든 요소 조합을 효율적으로 생성하려면 어떻게 해야 합니까?

Susan Sarandon
풀어 주다: 2024-12-12 10:33:11
원래의
632명이 탐색했습니다.

How can I efficiently generate all possible combinations of elements from multiple PHP arrays of varying lengths?

여러 PHP 배열에서 항목 조합 생성

다양한 길이의 여러 배열을 처리할 때 가능한 모든 PHP 배열 조합을 생성하는 것이 어려워집니다. 그들의 요소. 이 문서에서는 다용도 PHP 솔루션을 제공하여 이 문제를 해결합니다.

임의의 배열 수를 허용하고 해당 요소의 가능한 모든 조합을 포함하는 배열을 출력하는 함수를 만드는 작업입니다. 예를 들어, 3개의 배열이 있다고 가정해 보겠습니다.

$arrayA = array('A1', 'A2', 'A3');
$arrayB = array('B1', 'B2', 'B3');
$arrayC = array('C1', 'C2');
로그인 후 복사

원하는 출력은 18개 조합의 배열입니다.

[
    ['A1', 'B1', 'C1'],
    ['A1', 'B1', 'C2'],
    ['A1', 'B2', 'C1'],
    ['A1', 'B2', 'C2'],
    ['A1', 'B3', 'C1'],
    ['A1', 'B3', 'C2'],
    ['A2', 'B1', 'C1'],
    ['A2', 'B1', 'C2'],
    ['A2', 'B2', 'C1'],
    ['A2', 'B2', 'C2'],
    ['A2', 'B3', 'C1'],
    ['A2', 'B3', 'C2'],
    ['A3', 'B1', 'C1'],
    ['A3', 'B1', 'C2'],
    ['A3', 'B2', 'C1'],
    ['A3', 'B2', 'C2'],
    ['A3', 'B3', 'C1'],
    ['A3', 'B3', 'C2'],
]
로그인 후 복사

이 솔루션은 재귀적 접근 방식을 사용합니다.

function combinations($arrays, $i = 0) {
    if (!isset($arrays[$i])) {
        return array();
    }
    if ($i == count($arrays) - 1) {
        return $arrays[$i];
    }

    // get combinations from subsequent arrays
    $tmp = combinations($arrays, $i + 1);

    $result = array();

    // concat each array from tmp with each element from $arrays[$i]
    foreach ($arrays[$i] as $v) {
        foreach ($tmp as $t) {
            $result[] = is_array($t) ?
                array_merge(array($v), $t) :
                array($v, $t);
        }
    }

    return $result;
}
로그인 후 복사

이 함수는 배열의 배열을 입력으로 사용하고 재귀 카운터 $i를 0으로 초기화합니다. 인덱스 $i에 현재 배열이 있는지 확인하고, 없으면 빈 배열을 반환합니다. $i가 마지막 인덱스와 같으면 기본 사례를 나타내며 현재 배열이 반환됩니다.

그렇지 않으면 조합을 재귀적으로 호출하여 $tmp에 저장된 후속 배열의 조합을 얻습니다. 빈 $result 배열을 초기화하고 인덱스 $i에서 현재 배열을 반복합니다. 이 배열의 각 요소에 대해 $tmp의 각 조합과 연결하여 결과를 $result에 추가합니다.

이 프로세스는 모든 조합이 생성될 때까지 반복적으로 진행됩니다. 입력 배열에서 가능한 모든 항목 조합을 나타내는 결과 배열이 반환됩니다.

위 내용은 다양한 길이의 여러 PHP 배열에서 가능한 모든 요소 조합을 효율적으로 생성하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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