第一种:3个元素
第二种:2个元素
第三种:2个元素
怎样生成
0-0-0
0-0-1
0-1-0
0-1-1
1-0-0
1-0-1
1-1-0
1-1-1
2-0-0
2-0-1
2-1-0
2-1-1
这样的格式呢?
种类数和每个种类的元素个数可变,比如
第一种:2个元素
第二种:1个元素
第三种:2个元素
第四种:3个元素
就变成了
0-0-0-0
....
2-0-1-2
这样的格式呢?
这不就是普通的取余么,普通的一个数组就行了,用一个自增整数反复取余就能列出所有组合了
http://3v4l.org/rnOU4
php
<?php print_r(every(array(3,2,2))); print_r(every(array(1,2,3,4))); function every($levels) { $results = array(); $i = 0; while(true) { $current = $i; $result = array(); foreach(array_reverse($levels) as $max) { array_unshift($result, $current % $max); $current = intval($current / $max); } if($current >= 1) { break; } else { $results[] = $result; $i++; } } return $results; }
业务环境没有写清同学~不明白你在说什么咯~