ホームページ > バックエンド開発 > PHPチュートリアル > PHP で配列のすべてのサブセットを効率的に生成するにはどうすればよいですか?

PHP で配列のすべてのサブセットを効率的に生成するにはどうすればよいですか?

DDD
リリース: 2024-11-17 18:58:02
オリジナル
381 人が閲覧しました

How Can I Efficiently Generate All Subsets of an Array in PHP?

PHP での配列のサブセットの検索

配列の考えられるすべてのサブセットのクロージャーを決定することは、リレーショナル データベース設計における重要な手順です。 PHP で非反復サブセットを見つけるには、次のアプローチを検討してください。

array_merge を使用したサブセット生成

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート