PHP에서 여러 배열의 데카르트 곱 계산
문제:
여러 PHP에서 배열, 가능한 모든 요소 조합을 결합하는 데카르트 곱을 어떻게 생성할 수 있습니까? 반복을 제외한 각 배열?
해결책:
PHP에서 데카르트 곱을 얻으려면 array_cartesian이라는 재귀 함수를 정의할 수 있습니다. 이 함수는 입력 배열의 배열을 인수로 사용합니다. 기본 사례는 배열 수가 0일 때 발생하며, 이 경우 배열 내부의 빈 배열이 반환됩니다. 그렇지 않으면 함수는 array_shift 함수를 사용하여 목록에서 첫 번째 배열을 제거한 다음 나머지 배열로 자신을 재귀적으로 호출합니다.
첫 번째 배열의 각 요소 v에 대해 함수는 각 하위 배열을 반복합니다. p는 나머지 배열의 데카르트 곱입니다. 그런 다음 v와 p를 병합하여 새 하위 배열을 구성하고 이 하위 배열을 결과 데카르트 곱에 추가합니다.
예:
다음 집합을 고려하세요. 배열:
$array[0][0] = 'apples'; $array[0][1] = 'pears'; $array[0][2] = 'oranges'; $array[1][0] = 'steve'; $array[1][1] = 'bob';
이러한 배열을 array_cartesian 함수에 전달하면
$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 ) [4] => Array ( [0] => oranges [1] => steve ) [5] => Array ( [0] => oranges [1] => bob ) )
따라서 이 함수는 입력 배열에서 모든 고유한 요소 조합을 효과적으로 생성합니다.
위 내용은 반복을 제거하면서 PHP에서 여러 배열의 데카르트 곱을 어떻게 생성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!