寻找在PHP数组的子集 [英] Finding the subsets of an array in PHP
本文介绍了寻找在PHP数组的子集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有属性的关系模式(A B C D)。
我有一组函数依赖我了。
I have a Relational Schema with attributes (A B C D). I have a set of Functional Dependencies with me too.
现在我需要确定对R的属性的所有可能的子集的关闭。这就是我卡住了。我需要学习如何在PHP中找到的子集(不重复)。
Now I need to determine the closure for all the possible subsets of R's attributes. That's where I am stuck. I need to learn how to find subsets (non-repeating) in PHP.
我的数组存储这样。
$ATTRIBUTES = ('A', 'B', 'C', 'D').
所以我的子集应
$SUBSET = ('A', 'B', 'C', 'D', 'AB', 'AC', AD', 'BC', 'BD', 'CD', 'ABC', 'ABD', 'BCD', 'ABCD')
在code不应该是一件大事,但由于某种原因,我不能让我的头周围。
The code shouldn't be something big but for some reason I can't get my head around it.
推荐答案
您希望为电力集 $属性
?那是你的问题意味着什么。
You wish for the power set of $attributes
? That is what your question implies.
一个例子可以发现这里(引用完整性)
An example can be found here (quoted for completeness)
<?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数组的子集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文