配列の組み合わせを生成するための PHP アルゴリズム
PHP では、多くの場合、配列から要素の組み合わせを生成することが実際的な要件となります。数値 1、2、3、4、5、6、7 を含む配列を考えてみましょう。順序を無視して、この配列から 5 つの要素を選択するとします。たとえば、(1, 2, 3, 4, 5) と (4, 5, 3, 1, 2) は同じ組み合わせとみなされます。
反復子クラスを使用した解決策
よく練られたソリューションの 1 つは、Combinations という名前の Iterator クラスを利用することです。このクラスは Iterator インターフェイスの実装であり、組み合わせを反復処理するための簡単なメソッドを提供します。
class Combinations implements Iterator { // ... (class definition as provided in the answer) }
このクラス内では、次のメソッドを返す next() メソッドを繰り返し呼び出すことで組み合わせを生成できます。組み合わせを現在値として使用します。このプロセスは、 valid() メソッドが false を返し、すべての組み合わせが使い果たされたことを示すまで続きます。
例
説明するために、Combinations クラスのインスタンスを作成してみましょう。そして、指定された配列の組み合わせを反復処理します:
$combinations = new Combinations([1, 2, 3, 4, 5, 6, 7], 5); foreach ($combinations as $combination) { echo implode(', ', $combination) . ' '; }
このコードは次を生成します。出力:
1, 2, 3, 4, 5 1, 2, 3, 4, 6 1, 2, 3, 4, 7 1, 2, 3, 5, 6 1, 2, 3, 5, 7 1, 2, 3, 6, 7 1, 2, 4, 5, 6 1, 2, 4, 5, 7 1, 2, 4, 6, 7 1, 2, 5, 6, 7 1, 3, 4, 5, 6 1, 3, 4, 5, 7 1, 3, 4, 6, 7 1, 3, 5, 6, 7 1, 4, 5, 6, 7 2, 3, 4, 5, 6 2, 3, 4, 5, 7 2, 3, 4, 6, 7 2, 3, 5, 6, 7 2, 4, 5, 6, 7 3, 4, 5, 6, 7
このソリューションを利用すると、PHP で配列要素の組み合わせを効果的に生成して反復処理し、最初のクエリで説明された課題に対処できます。
以上がPHP で配列のすべての組み合わせを生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。