ホームページ >バックエンド開発 >PHPチュートリアル >キーと値のペアを保持しながら PHP 連想配列のデカルト積を計算するにはどうすればよいですか?
異なる属性を表す複数のサブ配列を含む連想配列が与えられた場合、タスクは、キーとそれに対応するキーを保持したデカルト積
N 個の部分配列を持つ配列 $input (各部分配列に Cn 要素がある) の場合、帰納法を続行できます。
最初の 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 中国語 Web サイトの他の関連記事を参照してください。