OK, here is your code (and by the way, thanks for posting such an interesting and complex problem - at least for me ... :-)) - using recursion for all possible permutations (by N), given the array of elements)
The code:
<?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; }
Exit:
Array ( [0] => cat cat cat [1] => cat cat dog [2] => cat cat fish [3] => cat dog cat [4] => cat dog dog [5] => cat dog fish [6] => cat fish cat [7] => cat fish dog [8] => cat fish fish [9] => dog cat cat [10] => dog cat dog [11] => dog cat fish [12] => dog dog cat [13] => dog dog dog [14] => dog dog fish [15] => dog fish cat [16] => dog fish dog [17] => dog fish fish [18] => fish cat cat [19] => fish cat dog [20] => fish cat fish [21] => fish dog cat [22] => fish dog dog [23] => fish dog fish [24] => fish fish cat [25] => fish fish dog [26] => fish fish fish )
TIP: In permutations($words,2) you can get exactly what you want ...
Dr. Kameleon
source share