PHP의 여러 배열에서 조합 생성
소개
모든 조합을 생성하는 작업 여러 배열의 항목 중 조합 최적화 문제가 발생하는 경우가 종종 있습니다. 이 기사에서는 가변 개수의 소스 배열을 처리할 수 있는 함수의 필요성을 해결하는 재귀적 솔루션을 제시합니다.
문제 설명
다양한 개수의 배열이 주어진 경우 요소의 경우 항목의 모든 조합을 찾습니다. 여기서 조합 수는 각 배열의 요소 수를 곱한 것과 같습니다. 예를 들어 다음과 같은 배열이 있다고 가정해 보겠습니다.
$arrayA = array('A1','A2','A3'); $arrayB = array('B1','B2','B3'); $arrayC = array('C1','C2');
18개 조합의 배열을 생성하는 것이 목표입니다.
[ ['A1', 'B1', 'C1'], ['A1', 'B1', 'C2'], ['A1', 'B2', 'C1'], ... ]
재귀 솔루션
다음 재귀 함수는 가능한 모든 조합을 생성합니다. 항목:
function combinations($arrays, $i = 0) { // If reaching the last array, return the array itself if (!isset($arrays[$i])) { return array(); } // If at the parent array, return the recursive call to the following array if ($i == count($arrays) - 1) { return $arrays[$i]; } // Get combinations from subsequent arrays $tmp = combinations($arrays, $i + 1); $result = array(); // Concatenate 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; }
데모
다음 코드는 조합 함수의 사용법을 보여줍니다.
print_r( combinations( array( array('A1','A2','A3'), array('B1','B2','B3'), array('C1','C2') ) ) );
이렇게 하면 예상되는 배열이 출력됩니다. 18가지 조합.
위 내용은 PHP의 여러 배열에서 모든 조합을 재귀적으로 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!