permutations with repetition
<?php $arr = [ 'one', 'two', 'three', ]; function permutate_with_repeat($arr, $length) { $permutations = []; function recurse($array, $data) use (&$permutations, $length) { $size = count($array); if ($size == 0) { $permutations[] = $data; } else { for ($i = 0; $i < $size; $i++) { $recur_data = $data; $recur_data[] = $array[$i]; $recur_array = array_slice($array, 0); array_splice($recur_array, $i, 1); recurse($recur_array, $recur_data); } } } recurse($arr, []); $permutations = array_filter($permutations, function ($item) use ($length) { return count($item) === $