PHP에서 여러 배열의 데카르트 곱 만들기
다음과 같은 PHP 배열 구조를 고려하세요.
$array[0][0] = 'apples'; $array[0][1] = 'pears'; $array[0][2] = 'oranges'; $array[1][0] = 'steve'; $array[1][1] = 'bob';
목표: 이러한 배열에서 가능한 모든 요소 조합의 표 목록을 생성합니다.
해결책:
여러 배열에서 가능한 모든 조합을 생성하는 개념을 "데카르트 곱"이라고 합니다. PHP에서 이를 달성하는 방법에는 여러 가지가 있습니다.
한 가지 접근 방식은 PHP의 배열 기능을 활용하는 것입니다. 다음 코드 조각은 func_get_args() 및 재귀를 사용하여 데카르트 곱을 구현합니다.
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') );
$cross에 저장된 결과는 가능한 모든 조합을 포함하는 배열이 됩니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!