首页  >  文章  >  后端开发  >  如何在 PHP 中高效生成数组的所有子集?

如何在 PHP 中高效生成数组的所有子集?

DDD
DDD原创
2024-11-17 18:58:02303浏览

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