php从多维数组中获取所有有效组合
我有一个数组,它表示键中允许的值。此数组的长度是动态的php从多维数组中获取所有有效组合,php,arrays,Php,Arrays,我有一个数组,它表示键中允许的值。此数组的长度是动态的 array( 10=>array(100,101,102), 11=>array(100,104), 12=>array(100,102,103) ) 在本例中,键10可以有100、101和102 我想得到所有有效的组合,其中每个值只出现一次 array( array(10=>array(100,101,102),11=>array(104),12=>array(103)), arra
array(
10=>array(100,101,102),
11=>array(100,104),
12=>array(100,102,103)
)
在本例中,键10可以有100、101和102
我想得到所有有效的组合,其中每个值只出现一次
array(
array(10=>array(100,101,102),11=>array(104),12=>array(103)),
array(10=>array(100,101),10=>array(104),12=>array(102,103)),
array(10=>array(101),10=>array(100,104),12=>array(102,103)),
array(10=>array(101),10=>array(104),12=>array(100,102,103)),
AND SO ON
)
他们希望您找到每个索引的幂集,然后计算这些幂集的幂集
此代码将允许您计算每个索引的功率集。它应该让你开始,让你知道如何完成问题的其余部分
function power_set($arr)
{
$sets = [];
for ($i = 0; $i < pow(2, count($arr)); $i++) {
$set = [];
for ($j = 0; $j < count($arr); $j++) {
if ($i & (1 << $j)) {
$set[] = $arr[$j];
}
}
if (count($set) > 0) {
$sets[] = $set;
}
$set = [];
}
return $sets;
}
我注意到的一件事是,您没有包括集合没有元素的情况。从技术上讲,这应该包括在内,所以我会检查以确保您的样本输出是正确的。我修改了算法以排除这种情况,但我认为应该包括它
如果要包含它,请删除检查$set
中元素数量的If语句,它们希望您找到每个索引的值,然后计算集合的幂集
此代码将允许您计算每个索引的功率集。它应该让你开始,让你知道如何完成问题的其余部分
function power_set($arr)
{
$sets = [];
for ($i = 0; $i < pow(2, count($arr)); $i++) {
$set = [];
for ($j = 0; $j < count($arr); $j++) {
if ($i & (1 << $j)) {
$set[] = $arr[$j];
}
}
if (count($set) > 0) {
$sets[] = $set;
}
$set = [];
}
return $sets;
}
我注意到的一件事是,您没有包括集合没有元素的情况。从技术上讲,这应该包括在内,所以我会检查以确保您的样本输出是正确的。我修改了算法以排除这种情况,但我认为应该包括它
如果要包含它,请删除检查$set
中元素数量的If语句