PHP에서 여러 배열의 데카르트 곱 생성
소개:
여러 배열에서 조합을 생성하는 것은 프로그래밍의 일반적인 작업입니다. 이러한 배열의 데카르트 곱은 입력 배열에서 가능한 모든 요소 조합의 목록입니다.
문제:
여러 하위 배열이 있는 배열이 주어지면 테이블을 생성하려고 합니다. 해당 하위 배열 요소의 고유한 조합을 모두 포함합니다. 예를 들어, 두 개의 하위 배열이 있는 경우:
$array[0][0] = 'apples'; $array[0][1] = 'pears'; $array[0][2] = 'oranges'; $array[1][0] = 'steve'; $array[1][1] = 'bob';
출력은 다음과 같습니다.
Array 0 Array 1 apples steve apples bob pears steve pears bob
해결 방법: 데카르트 곱
이 문제에는 다음이 필요합니다. 여러 요소의 가능한 모든 조합을 생성하는 데카르트 곱을 계산합니다.
구현:
데카르트 곱을 계산하는 한 가지 접근 방식은 재귀 함수를 사용하는 것입니다. 구현 예는 다음과 같습니다.
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 ( [0] => apples [1] => steve ) [1] => Array ( [0] => apples [1] => bob ) [2] => Array ( [0] => pears [1] => steve ) [3] => Array ( [0] => pears [1] => bob ) )
예상 출력과 일치합니다.
위 내용은 PHP에서 여러 배열의 데카르트 곱을 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!