$arr = array('1', '2', '3', '4', '5'); for($i = 1; $i <= count($arr); $i++){ loop($arr, '', $i); } function loop($arr, $prefix, $n){ if (count($arr) < $n || $n == 0) { return; } elseif($n == 1) { foreach ($arr as $v) { echo $prefix.$v.'<br>'; } } else { foreach ($arr as $v){ array_shift($arr); if (count($arr) >= $n - 1) { loop($arr, $prefix.$v, $n-1); } } } }