0

ここでこれを見つけましたPHPはすべての組み合わせを取ります

指定された配列に n 個のセットを含めるようにさらに変更しました。ただし、セット内で重複する番号を取得しない方法を理解することはできません。例えば

出力が

1、1、3、4

次に、余分な「1」を削除して、次のように指定する必要があります

1,3,4

2 つの出力がある場合も同様です。

1,3,4,5 および 4,5,3,1

次に、重複セットの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);

?>
4

0 に答える 0