PHP で複数の配列のデカルト積を作成する
次のような PHP 配列構造を考えてみましょう。
$array[0][0] = 'apples'; $array[0][1] = 'pears'; $array[0][2] = 'oranges'; $array[1][0] = 'steve'; $array[1][1] = 'bob';
目的: これらの配列から要素の可能なすべての組み合わせの表形式のリストを生成すること。 duplication.
解決策:
複数の配列から可能なすべての組み合わせを生成する概念は、「デカルト積」として知られています。 PHP でこれを実現するには、いくつかの方法があります。
1 つのアプローチは、PHP の配列関数を利用することです。次のコード スニペットは、func_get_args() と再帰を使用してデカルト積を実装します。
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') );
結果は $cross に保存され、すべての可能な組み合わせを含む配列になります:
print_r($cross);
出力:
Array ( [0] => Array ( [0] => apples [1] => steve ) [1] => Array ( [0] => apples [1] => bob ) [2] => Array ( [0] => pears [1] => steve ) [3] => Array ( [0] => pears [1] => bob ) )
以上がPHPで複数の配列のデカルト積を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。