21,886
社区成员
发帖
与我相关
我的任务
分享
$arr1 = array();
$result = array_column(array_shift($arr),'name');
while($arr2 = array_column(array_shift($arr),'name')){
$arr1 = $result;
$result = array();
foreach($arr1 as $v){
foreach($arr2 as $v2){
$result[] = $v.$v2;
}
}
}
Array
(
[0] => A1111aa
[1] => A1111bb
[2] => A2222aa
[3] => A2222bb
[4] => A3333aa
[5] => A3333bb
[6] => B1111aa
[7] => B1111bb
[8] => B2222aa
[9] => B2222bb
[10] => B3333aa
[11] => B3333bb
)
foreach ($result as $value) {
$res[]['name'] = $value;
}
res就是最后的结果 其中arr 是你得那个数组$a = array(
array('黑色', '白色'),
array('大号', '中号', '小号'),
array('5kg', '10kg')
);
print_r(Descartes($a));
Array
(
[0] => Array
(
[0] => 黑色
[1] => 大号
[2] => 5kg
)
[1] => Array
(
[0] => 黑色
[1] => 大号
[2] => 10kg
)
[2] => Array
(
[0] => 黑色
[1] => 中号
[2] => 5kg
)
[3] => Array
(
[0] => 黑色
[1] => 中号
[2] => 10kg
)
[4] => Array
(
[0] => 黑色
[1] => 小号
[2] => 5kg
)
[5] => Array
(
[0] => 黑色
[1] => 小号
[2] => 10kg
)
[6] => Array
(
[0] => 白色
[1] => 大号
[2] => 5kg
)
[7] => Array
(
[0] => 白色
[1] => 大号
[2] => 10kg
)
[8] => Array
(
[0] => 白色
[1] => 中号
[2] => 5kg
)
[9] => Array
(
[0] => 白色
[1] => 中号
[2] => 10kg
)
[10] => Array
(
[0] => 白色
[1] => 小号
[2] => 5kg
)
[11] => Array
(
[0] => 白色
[1] => 小号
[2] => 10kg
)
)
function Descartes($d) {
if(func_num_args() > 1) $d = func_get_args();
$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;
}