我在这里找到了PHP 采用所有组合
我进一步修改它以将 n 个集合包含到给定的数组中。但是我无法弄清楚如何在一组中不获取任何重复的数字。例如
如果输出是
1、1、3、4
那么它应该删除额外的'1'并将其作为
1,3,4
同样,如果有 2 个输出。
1,3,4,5 和 4,5,3,1
那么它也应该删除其中一个重复集。
我尝试使用 array_unique 并认为它可以解决一半的问题,但是它给出了内存分配错误。
<?php
function permutations($arr,$n)
{
$res = array();
foreach ($arr as $w)
{
if ($n==1) $res[] = $w;
else
{
$perms = permutations($arr,$n-1);
foreach ($perms as $p)
{
$res[] = $w." ".$p;
}
}
}
return $res;
}
// Your array
$numbers = array(1,2,3,4,5,6,7);
// Get permutation by groups of n elements
for($i=1; $i<8; $i++)
$pe = permutations($numbers,$i);
$pe = array_unique($pe);
// Print it out
print_r($pe);
?>