这段程序是求出一个集合所有的子集合,我想把结果保存到一个数组里,待结果完成后,返回一个变量
我怎样改都不行,大侠能帮帮忙吗?$arr = array(1, 2, 3, 4);
composeList($arr);
function composeList($from = array(), $to = array())
{
echo join(',', $to) . '<br />';
foreach($from AS $k => $v)
{
$to[] = $v;
unset($from[$k]);
composeList($from, $to);
array_pop($to);
}
}
我怎样改都不行,大侠能帮帮忙吗?$arr = array(1, 2, 3, 4);
composeList($arr);
function composeList($from = array(), $to = array())
{
echo join(',', $to) . '<br />';
foreach($from AS $k => $v)
{
$to[] = $v;
unset($from[$k]);
composeList($from, $to);
array_pop($to);
}
}
composeList($arr);
function composeList($from = array(), $to = array())
{
echo join(',', $to) . '<br />';
foreach($from AS $k => $v)
{
$to[] = $v;
unset($from[$k]);
composeList($from, $to);
array_pop($to);
}
}算出来的结果是这样的
1
1,2
1,2,3
1,2,3,4
1,2,4
1,3
1,3,4
1,4
2
2,3
2,3,4
2,4
3
3,4
4我想把程序改为
把以上的数字都放进一个数组里面,传给一个变量,可以吗?
array(
[0] => array(0=>1),
[1] => array(0=>1,1=>2),
[2] => array(0=>1,1=>2,2=>3),
[3] => array(0=>1,1=>2,2=>3,3=>4),
[4] => array(0=>1,1=>2,32=>4),
............
)
然后传回$set = composeList($arr);
传回$set这个变量。
能够改为这样吗?
$p = composeList($arr);
print_r($p);
function composeList($from = array(), $to = array())
{
$r = array();
echo join(',', $to) . '<br />';
$r[] = $to;
foreach($from AS $k => $v)
{
$to[] = $v;
unset($from[$k]);
$r = array_merge($r, composeList($from, $to));
array_pop($to);
}
return $r;
}