【发布时间】:2013-11-11 02:28:57
【问题描述】:
$num = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
在数组 $num 中有 10 个数字。我想用 PHP 列出所有可能的 3 位数组合。 就像:
1, 2, 3
1, 2, 4
1, 2, 5
etc
编辑:
感谢所有答案,但如果我想创建 6 个数字组合,则会出现问题。
$num_array2 = array(1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 15, 16, 18, 19, 20);
foreach($num_array2 AS $value1) {
foreach($num_array2 AS $value2) {
if($value2 == $value1) {
continue;
}
foreach($num_array2 AS $value3) {
if($value3 == $value1 || $value3 == $value2) {
continue;
}
foreach($num_array2 AS $value4) {
if($value4 == $value1 || $value4 == $value2 || $value4 == $value3) {
continue;
}
foreach($num_array2 AS $value5) {
if($value5 == $value1 || $value5 == $value2 || $value5 == $value3 || $value5 == $value4) {
continue;
}
foreach($num_array2 AS $value6) {
if($value6 == $value1 || $value6 == $value2 || $value6 == $value3 || $value6 == $value4 || $value6 == $value5) {
continue;
}
echo "$value1, $value2, $value3, $value4, $value5, $value6 \n<br />";
}
}
}
}
}
}
我无法列出
1, 2, 3, 4, 5, 6
1, 2, 3, 4, 5, 7
etc.
我是不是做错了什么?
【问题讨论】:
-
所以你会期望 10^10 (1000) 个可能的数字?
-
@Endless 实际上是
10 * 8 * 9 = 720可能的值,因为没有两个数字在一个结果中出现两次 :) -
猜猜我数学很差:P
-
在这里查看解决问题的另一种方法:stackoverflow.com/questions/1256117/…
-
实际上组合的数量,在数学意义上,所以没有列出 1,2,3 和 3,2,1,只有 10!/(3!(10-3)!) = 120.