解决方案 »

  1.   

    $arr = array(
      array( "A",  "B",  "C"),
      array("1",  "2",  "3", "4"),
      array("X",  "Y",  "Z"),
    );function foo($d) {
      $r = array_shift($d);
      while($d) {
        $t = array();
        foreach(array_shift($d) as $k1=>$x) {
          foreach($r as $k2=>$y) $t[] = "$y $x";
        }
        $r = $t;
      }
      return $r;
    }
    print_r(foo($arr));
    Array
    (
        [0] => A 1 X
        [1] => B 1 X
        [2] => C 1 X
        [3] => A 2 X
        [4] => B 2 X
        [5] => C 2 X
        [6] => A 3 X
        [7] => B 3 X
        [8] => C 3 X
        [9] => A 4 X
        [10] => B 4 X
        [11] => C 4 X
        [12] => A 1 Y
        [13] => B 1 Y
        [14] => C 1 Y
        [15] => A 2 Y
        [16] => B 2 Y
        [17] => C 2 Y
        [18] => A 3 Y
        [19] => B 3 Y
        [20] => C 3 Y
        [21] => A 4 Y
        [22] => B 4 Y
        [23] => C 4 Y
        [24] => A 1 Z
        [25] => B 1 Z
        [26] => C 1 Z
        [27] => A 2 Z
        [28] => B 2 Z
        [29] => C 2 Z
        [30] => A 3 Z
        [31] => B 3 Z
        [32] => C 3 Z
        [33] => A 4 Z
        [34] => B 4 Z
        [35] => C 4 Z
    )
      

  2.   

    这个符合你的输出要求$arr = array(
      array( "A",  "B",  "C"),
      array("1",  "2",  "3", "4"),
      array("X",  "Y",  "Z"),
    );
     
    function foo($d) {
      $r = array_pop($d);
      while($d) {
        $t = array();
        foreach(array_pop($d) as $k1=>$x) {
          foreach($r as $k2=>$y) $t[] = "$x $y";
        }
        $r = $t;
      }
      return $r;
    }
    print_r(foo($arr));
    Array
    (
        [0] => A 1 X
        [1] => A 1 Y
        [2] => A 1 Z
        [3] => A 2 X
        [4] => A 2 Y
        [5] => A 2 Z
        [6] => A 3 X
        [7] => A 3 Y
        [8] => A 3 Z
        [9] => A 4 X
        [10] => A 4 Y
        [11] => A 4 Z
        [12] => B 1 X
        [13] => B 1 Y
        [14] => B 1 Z
        [15] => B 2 X
        [16] => B 2 Y
        [17] => B 2 Z
        [18] => B 3 X
        [19] => B 3 Y
        [20] => B 3 Z
        [21] => B 4 X
        [22] => B 4 Y
        [23] => B 4 Z
        [24] => C 1 X
        [25] => C 1 Y
        [26] => C 1 Z
        [27] => C 2 X
        [28] => C 2 Y
        [29] => C 2 Z
        [30] => C 3 X
        [31] => C 3 Y
        [32] => C 3 Z
        [33] => C 4 X
        [34] => C 4 Y
        [35] => C 4 Z
    )
      

  3.   

    function ergodic($stack, $now, $length, &$arr){
    if($now<$length){
    foreach($arr[$now] as $var){
    array_push($stack, $var);
    ergodic($stack, $now+1, $length, $arr);
    array_pop($stack);
    }
    }else{
    echo implode(' ', $stack).'<br/>';
    }
    }ergodic(array(), 0, count($arr), $arr);求蹭分
      

  4.   


    <?php
    $arr = array(
        array( "A",  "B",  "C"),
        array("1",  "2",  "3", "4"),
        array("X",  "Y",  "Z"),
    );$result = bl($arr);print_r($result);function bl($arr){
        $result = array();
        $total = 1;
        $anum = count($arr);
        $alength = array();    for($i=$anum-1; $i>=0; $i--){
            $total = $total * count($arr[$i]);
            if($i==$anum-1){
                $alength[$i] = 1;
            }else{
                $alength[$i] = $alength[$i+1] * count($arr[$i+1]);
            }
        }    for($i=0; $i<$total; $i++){
            $tmp = array();
            for($j=0; $j<$anum; $j++){
                array_push($tmp, $arr[$j][floor(($i)/$alength[$j])%count($arr[$j])]);
            }
            array_push($result, implode(' ',$tmp));
        }    return $result;
    }?>