複数の配列を扱う場合、これらの要素の可能なすべての組み合わせを含むテーブルを生成する必要が生じる場合があります。繰り返しを避けながら配列します。この数学演算はデカルト積として知られています。
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);
この関数は可変長の引数を受け取り、それぞれが配列を表します。 。最初の配列から要素を選択し、それを残りの配列のすべての可能なデカルト積と組み合わせることで、デカルト積を再帰的に計算します。
結果は、入力配列の要素の一意の組み合わせをすべて含むネストされた配列になります。指定された例では、2 つの配列のデカルト積は次のようになります。
Array 0 Array 1 apples steve apples bob pears steve pears bob
このソリューションは、2 次元の配列に有効であるだけでなく、任意の数の配列を処理するように拡張することもできます。これは、PHP でデカルト積の問題を解決するための簡潔かつエレガントな方法を提供します。
以上がPHPで複数の配列のデカルト積を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。