配列の考えられるすべてのサブセットのクロージャーを決定することは、リレーショナル データベース設計における重要な手順です。 PHP で非反復サブセットを見つけるには、次のアプローチを検討してください。
function powerSet(array $array) : array { // add the empty set $results = [[]]; foreach ($array as $element) { foreach ($results as $combination) { $results[] = [...$combination, $element]; } } return $results; } $ATTRIBUTES = ['A', 'B', 'C', 'D']; $SUBSETS = powerSet($ATTRIBUTES);
この関数は、array_merge を使用して、空のセットを含むすべての可能なサブセットを生成します。結果の $SUBSETS 配列には、質問で要求されたすべての非反復サブセットが含まれます:
[ [], ['A'], ['B'], ['A', 'B'], ['C'], ['A', 'C'], ['B', 'C'], ['A', 'B', 'C'], ['D'], ['A', 'D'], ['B', 'D'], ['A', 'B', 'D'], ['C', 'D'], ['A', 'C', 'D'], ['B', 'C', 'D'], ['A', 'B', 'C', 'D'] ]
このメソッドは、PHP で配列のサブセットを見つけるための簡潔で効率的なソリューションを提供し、さまざまなデータに適用できるようにします。分析とデータベースの設計タスク。
以上がPHP で配列のすべてのサブセットを効率的に生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。