例如:$arr=Array(
            [0] => 32,
            [1] => Array(
                    [0] => 24
                    [1] => 34
                    [2] => 43
                    [3] => 44
                ),
            [2] => Array(
                    [0] => 55
                    [1] => 58
                    [2] => 72
                ),
            [3] => 36)
我想将其分解成 $arr1=array([0] =>32,[1] =>24,[2]=>55,[3]=>36);
               $arr2=array([0] =>32,[1] =>24,[2]=>58,[3]=>36);
               $arr3=array([0] =>32,[1] =>24,[2]=>72,[3]=>36);
               $arr4=array([0] =>32,[1] =>34,[2]=>55,[3]=>36);其实就是求笛卡尔积;今天郁闷了半天 ;没有好的解决方案;真难过;哎
正确结贴。。

解决方案 »

  1.   


    排列组合啦,每组选一个单元出来,组合成数列
    第一组和第四组只有一个单元,所以数列头尾只能是32和36,中间两组就逐个列举http://topic.csdn.net/u/20091011/12/bd610ef1-9923-4d27-b5ca-dcaa62e6bcc3.html
    跟这个是一样的
    用唠叨那个程式就行了
    只是把二维数组分成四个一维数组
      

  2.   

    跟我这个是一样的啦
    已经结贴了 你就把分给 在我帖子回复的人吧
    http://topic.csdn.net/u/20110531/17/dd79391a-ed60-4050-b741-409cf1cbe6d2.html
      

  3.   

    看到很多都是用feach写的,所以我用for写了一个
    <?php
    $arr=Array(
      0 => 32,
     1 => Array(
      0 => 24,
      1=> 34,
      2 => 43,
      3 => 44,
      ),
      2 => Array(
      0 => 55,
      1 => 58,
      2 => 72,
      ),
      3 => 36);
      function arrs($arr){
      for ($i=0;$i<count($arr[0]);$i++){
      is_array($arr[0]) ? $s1=$arr[0][$ii] : $s1=$arr[0];
     for($ii=0;$ii<count($arr[1]);$ii++){
     $s2=$s1;
     is_array($arr[1]) ? $s2=$s2.",".$arr[1][$ii] : $s2=$s2.",".$arr[1];
      for($iii=0;$iii<count($arr[2]);$iii++){
      $s3=$s2;
     is_array($arr[2]) ? $s3=$s3.",".$arr[2][$iii] : $s3=$s3.",".$arr[2];
      for($iiii=0;$iiii<count($arr[3]);$iiii++){
      $s4=$s3;
     is_array($arr[3]) ? $s4=$s4.",".$arr[3][$iiii] : $s4=$s4.",".$arr[3];
     $arrs[]=$s4;
     $s4='';
     }
     $s3='';
     }
     $s2='';
     }
     $s1='';
      }
      return $arrs;
      }
     print_r(arrs($arr));
    ?> 水平有限,写完后才发现如果做成递归应该会更好,这样你有数组中有多少元素都不怕了有空把这个改成递归