function foo($d) {
$r = array_pop($d);
while($d) {
$t = array();
$s = array_pop($d);
if(! is_array($s)) $s = array($s);
foreach($s as $x) {
foreach($r as $y) $t[] = array_merge(array($x), is_array($y) ? $y : array($y));
}
$r = $t;
}
return $r;
}
$ary = array(
'a'=>array('a_1','a_2'),
'b'=>array('b_1','b_2'),
'c'=>array('c_1','c_2'),
);
print_r(foo($ary));Array
(
[0] => Array
(
[0] => a_1
[1] => b_1
[2] => c_1
) [1] => Array
(
[0] => a_1
[1] => b_1
[2] => c_2
) [2] => Array
(
[0] => a_1
[1] => b_2
[2] => c_1
) [3] => Array
(
[0] => a_1
[1] => b_2
[2] => c_2
) [4] => Array
(
[0] => a_2
[1] => b_1
[2] => c_1
) [5] => Array
(
[0] => a_2
[1] => b_1
[2] => c_2
) [6] => Array
(
[0] => a_2
[1] => b_2
[2] => c_1
) [7] => Array
(
[0] => a_2
[1] => b_2
[2] => c_2
))
$r = array_pop($d);
while($d) {
$t = array();
$s = array_pop($d);
if(! is_array($s)) $s = array($s);
foreach($s as $x) {
foreach($r as $y) $t[] = array_merge(array($x), is_array($y) ? $y : array($y));
}
$r = $t;
}
return $r;
}
$ary = array(
'a'=>array('a_1','a_2'),
'b'=>array('b_1','b_2'),
'c'=>array('c_1','c_2'),
);
print_r(foo($ary));Array
(
[0] => Array
(
[0] => a_1
[1] => b_1
[2] => c_1
) [1] => Array
(
[0] => a_1
[1] => b_1
[2] => c_2
) [2] => Array
(
[0] => a_1
[1] => b_2
[2] => c_1
) [3] => Array
(
[0] => a_1
[1] => b_2
[2] => c_2
) [4] => Array
(
[0] => a_2
[1] => b_1
[2] => c_1
) [5] => Array
(
[0] => a_2
[1] => b_1
[2] => c_2
) [6] => Array
(
[0] => a_2
[1] => b_2
[2] => c_1
) [7] => Array
(
[0] => a_2
[1] => b_2
[2] => c_2
))
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货