여러 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!