$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 )
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 )
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
)
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
)
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);求蹭分
<?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;
}?>