여러 배열을 처리할 때 이러한 배열의 가능한 모든 요소 조합을 포함하는 테이블을 생성해야 할 수도 있습니다. 반복을 피하면서 배열. 이 수학적 연산을 데카르트 곱이라고 합니다.
PHP에서 이 문제를 해결하려면 다음 함수 활용을 고려해 보세요.
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 1 apples steve apples bob pears steve pears bob
이 솔루션은 2차원 배열에 효과적일 뿐만 아니라 확장하여 원하는 수의 배열을 처리할 수도 있습니다. 이는 PHP의 데카르트 곱 문제를 해결하는 간결하고 우아한 방법을 제공합니다.
위 내용은 PHP에서 여러 배열의 데카르트 곱을 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!