다양한 속성을 나타내는 여러 하위 배열이 있는 연관 배열이 주어지면 작업은 다음을 계산하는 것입니다. 키와 해당 키를 보존하면서 데카르트 곱 값.
각 하위 배열에 Cn 요소가 있는 N개의 하위 배열이 있는 $input 배열의 경우 귀납법을 진행할 수 있습니다.
첫 번째 N-1 하위 배열의 데카르트 곱이 있다고 가정하면 다음과 같이 N번째 하위 배열의 곱을 계산할 수 있습니다.
function cartesian($input) { $result = []; while (list($key, $values) = each($input)) { if (empty($values)) { continue; } if (empty($result)) { foreach ($values as $value) { $result[] = [$key => $value]; } } else { $append = []; foreach ($result as &$product) { $product[$key] = array_shift($values); $copy = $product; foreach ($values as $item) { $copy[$key] = $item; $append[] = $copy; } array_unshift($values, $product[$key]); } $result = array_merge($result, $append); } } return $result; }
$input = [ 'arm' => ['A', 'B', 'C'], 'gender' => ['Female', 'Male'], 'location' => ['Vancouver', 'Calgary'], ]; print_r(cartesian($input));
원하는 데카르트 곱을 출력하고, 키와 값 보존:
Array ( [0] => Array ( [arm] => A [gender] => Female [location] => Vancouver ) [1] => Array ( [arm] => A [gender] => Female [location] => Calgary ) [2] => Array ( [arm] => A [gender] => Male [location] => Vancouver ) ...etc.
위 내용은 키-값 쌍을 보존하면서 PHP 연관 배열의 데카르트 곱을 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!