在PHP中查找数组的子集

我有一个带有属性的关系架构(ABCD)。我也有一组功能依赖项。

现在,我需要确定R属性的所有可能子集的闭包。那就是我被困住的地方。我需要学习如何在PHP中查找子集(非重复)。

我的数组是这样存储的。

$ATTRIBUTES = ('A', 'B', 'C', 'D').

所以我的子集应该是

$SUBSET = ('A', 'B', 'C', 'D', 'AB', 'AC', AD', 'BC', 'BD', 'CD', 'ABC', 'ABD', 'BCD', 'ABCD')

该代码不应该太大,但是由于某种原因我无法理解。

回答:

您希望获得$attributes什么动力?那就是你的问题的含义。

可以在此处找到示例(为完整性起见)

<?php 

/**

* Returns the power set of a one dimensional array, a 2-D array.

* [a,b,c] -> [ [a], [b], [c], [a, b], [a, c], [b, c], [a, b, c] ]

*/

function powerSet($in,$minLength = 1) {

$count = count($in);

$members = pow(2,$count);

$return = array();

for ($i = 0; $i < $members; $i++) {

$b = sprintf("%0".$count."b",$i);

$out = array();

for ($j = 0; $j < $count; $j++) {

if ($b{$j} == '1') $out[] = $in[$j];

}

if (count($out) >= $minLength) {

$return[] = $out;

}

}

return $return;

}

以上是 在PHP中查找数组的子集 的全部内容, 来源链接: utcz.com/qa/400136.html

回到顶部