>백엔드 개발 >PHP 튜토리얼 >PHP의 여러 배열에서 항목의 모든 조합을 어떻게 생성할 수 있습니까?

PHP의 여러 배열에서 항목의 모든 조합을 어떻게 생성할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-14 13:46:12729검색

How Can I Generate All Combinations of Items from Multiple Arrays in PHP?

PHP에서 여러 배열에 있는 항목의 모든 조합 생성

여러 배열에 있는 항목의 모든 조합을 찾는 작업은 프로그래밍에서 자주 발생합니다. . 배열의 수와 각 배열 내의 요소는 다를 수 있습니다.

재귀적 솔루션

재귀적 접근 방식으로 이 문제를 효과적으로 해결할 수 있습니다. Combinations() 함수는 해결책을 제공합니다:

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;
}

사용 예

배열을 고려하십시오:

$arrayA = array('A1','A2','A3');
$arrayB = array('B1','B2','B3');
$arrayC = array('C1','C2');

모두 찾으려면 조합:

print_r(combinations(array($arrayA, $arrayB, $arrayC)));

출력:

Array
(
    [0] => A1
    [1] => B1
    [2] => C1
    [3] => A1
    [4] => B1
    [5] => C2
    [6] => A1
    [7] => B2
    [8] => C1
    [9] => A1
    [10] => B2
    [11] => C2
    [12] => A1
    [13] => B3
    [14] => C1
    [15] => A1
    [16] => B3
    [17] => C2
    [18] => A2
    [19] => B1
    [20] => C1
    [21] => A2
    [22] => B1
    [23] => C2
    [24] => A2
    [25] => B2
    [26] => C1
    [27] => A2
    [28] => B2
    [29] => C2
    [30] => A2
    [31] => B3
    [32] => C1
    [33] => A2
    [34] => B3
    [35] => C2
    [36] => A3
    [37] => B1
    [38] => C1
    [39] => A3
    [40] => B1
    [41] => C2
    [42] => A3
    [43] => B2
    [44] => C1
    [45] => A3
    [46] => B2
    [47] => C2
    [48] => A3
    [49] => B3
    [50] => C1
    [51] => A3
    [52] => B3
    [53] => C2
)

이 솔루션은 가능한 모든 조합을 효율적인 방식으로 제공합니다.

위 내용은 PHP의 여러 배열에서 항목의 모든 조합을 어떻게 생성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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