연관 배열이 제공되면 키를 유지하면서 데카르트 곱을 결정하는 것이 가능합니다. 내부에서 이를 활용하는 것입니다. 배열.
이 문제는 유도를 통해 접근할 수 있습니다.
단일 배열의 경우 데카르트 곱은 다음과 같습니다. 원래 배열의 각 항목을 나타내는 단일 키-값 쌍이 있는 일련의 배열입니다.
첫 번째 N의 곱을 가정합니다. -1개의 배열이 알려져 있으며 N번째 배열을 추가합니다. 포함:
기존 제품 각각에 대해 N번째 배열의 키와 N번째 배열의 첫 번째 값이 포함된 요소를 추가합니다. 배열.
이 단계를 반복하면 N 배열의 곱이 얻어집니다.
함수 cartesian($input) {<pre class="brush:php;toolbar:false">$result = array(); foreach ($input as $key => $values) { if (empty($values)) { continue; } if (empty($result)) { foreach($values as $value) { $result[] = array($key => $value); } } else { $append = array(); 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 = array(</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">'arm' => array('A', 'B', 'C'), 'gender' => array('Female', 'Male'), 'location' => array('Vancouver', 'Calgary'),
);
print_r(cartesian($input));
[0] => Array ( [arm] => A [gender] => Female [location] => Vancouver ) [1] => Array ( [arm] => A [gender] => Female [location] => Calgary ) [2] => Array ( [arm] => A [gender] => Male [location] => Vancouver ) </p>
...etc.
위 내용은 키를 보존하면서 PHP 연관 배열의 데카르트 곱을 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!