連想配列が与えられた場合、キーを保持しながらデカルト積を決定することが可能そしてそれらを内側で活用するarrays.
帰納法によってこの問題にアプローチできます:
単一の配列の場合、デカルト積は、元の配列の各項目を表す単一のキーと値のペアを持つ一連の配列です。
積を仮定します最初の N-1 個の配列がわかっているので、N 番目の配列を追加します
既存の製品ごとに、N 番目の配列のキーと N 番目の配列の最初の値を含む要素を追加します。 array.
これらの手順を繰り返すと、N 個の配列の積が次のようになります。
function cartesian($input) {</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><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(<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));
配列<br>(</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">[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 中国語 Web サイトの他の関連記事を参照してください。