ホームページ  >  記事  >  バックエンド開発  >  PHP で配列の非繰り返しサブセットをすべて効率的に見つけるにはどうすればよいですか?

PHP で配列の非繰り返しサブセットをすべて効率的に見つけるにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-16 13:46:03336ブラウズ

How to Efficiently Find All Non-Repeating Subsets of an Array in PHP?

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

リレーショナル データベースを扱う場合、属性のすべてのサブセットのクロージャを決定するのは複雑なタスクになる可能性があります。この記事では、PHP で非反復サブセットを効率的に見つける方法について説明します。

配列の定義

属性のセットを表す配列 $ATTRIBUTES を定義します。

$ATTRIBUTES = ['A', 'B', 'C', 'D'];

サブセットの生成

$ATTRIBUTES の可能なすべてのサブセットを生成するには、powerSet 関数を利用します。

function powerSet(array $array) : array {
    // Start with the empty set
    $results = [[]];

    // Iterate over the array elements
    foreach ($array as $element) {
        // Create new combinations by adding the element to existing combinations
        foreach ($results as $combination) {
            $results[] = [...$combination, $element];
        }
    }

    return $results;
}

使用例

$subsets = powerSet($ATTRIBUTES) を実行すると、次のサブセットが出力されます:

[['',''],['A'],['B'],['A','B'],['C'],['A','C'],['B','C'],['A','B','C'],['D'],['A','D'],['B','D'],['A','B','D'],... ]

これは、配列の非反復サブセットをすべて効率的に検索して保存する方法を示しています。 PHPで。このアプローチは、リレーショナル データベース スキーマの属性サブセットのクロージャを処理するための堅牢なソリューションを提供します。

以上がPHP で配列の非繰り返しサブセットをすべて効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。