首頁  >  文章  >  後端開發  >  如何在 PHP 中高效產生數組的所有子集?

如何在 PHP 中高效產生數組的所有子集?

DDD
DDD原創
2024-11-17 18:58:02305瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn