在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