如何列出所有可能的组合?
问题描述:
$num = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
数组$ num中有10个数字.我想用PHP列出所有可能的3位数组合.就像:
In array $num there are 10 numbers. I want to list all possible 3-number-combinations with PHP. Just like:
1, 2, 3
1, 2, 4
1, 2, 5
etc
感谢您提供所有答案,但是如果我想创建6位数组合,则会出现问题.
Thanks for all answers but there is a problem if I want to create 6-number-combinations.
$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.
我做错了吗?
答
尝试一下:
foreach($num AS $value1)
{
foreach($num AS $value2)
{
if($value2 == $value1){
continue;
}
foreach($num AS $value3)
{
if($value3 == $value1 || $value3 == $value2){
continue;
}
echo "$value1, $value2, $value3<br/>";
}
}
}
实际上,前面的代码列出了所有排列,而不是组合.如果需要所有组合,请尝试以下操作:
Actually, the previous code lists all permutations rather than combinations. If you want all combinations, try this:
for($value1 = 1; $value1 <= 10; $value1++){
for($value2 = $value1 + 1; $value2 <= 10; $value2++){
for($value3 = $value2 + 1; $value3 <= 10; $value3++){
echo "$value1, $value2, $value3<br/>";
}
}
}