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

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

Susan Sarandon
Susan Sarandon原创
2024-11-22 08:46:10247浏览

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

在 PHP 中查找数组的子集

在处理大量数字时,查找数组的唯一子集的任务可能特别具有挑战性的元素。我们寻求创建一组全面的子集,确保不发生重复。

例如,给定一个属性数组 {A, B, C, D},我们希望生成所有可能的子集,包括各个元素及其组合:{A、B、C、D、AB、AC、AD、BC、BD、CD、ABC、ABD、BCD、 ABCD}.

使用数组合并生成幂集

PHP 提供了一个利用 array_merge 函数生成幂集的紧凑解决方案。

function powerSet(array $array) : array {
    $results = [[]];

    foreach ($array as $element) {
        foreach ($results as $combination) {
            $results[] = [...$combination, $element];
        }
    }

    return $results;
}

// Example usage:
$ATTRIBUTES = ['A', 'B', 'C', 'D'];
$SUBSETS = powerSet($ATTRIBUTES);

生成的 $SUBSETS 数组将包含原始数组的所有非重复子集。

以上是如何在 PHP 中高效生成数组的所有唯一子集?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn