这段程序是求出一个集合所有的子集合,我想把结果保存到一个数组里,待结果完成后,返回一个变量
我怎样改都不行,大侠能帮帮忙吗?$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);
    }
}

解决方案 »

  1.   

    $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);
        }
    }算出来的结果是这样的
    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这个变量。
    能够改为这样吗?
      

  2.   

    $arr = array(1, 2, 3, 4);
    $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;
    }