hmm... I made a mistake in my algorithm.
Here's the corrected version, though unfortunately it is recursive rather than iterative:
<?php
function genNum(&$ret_array, $seed_array, $count, $start, $num) {
for ($i = $start; $i < $count; $i++) {
$ret_array[] = $temp = $num . $seed_array[$i];
genNum($ret_array, $seed_array, $count, $i + 1, $temp);
}
}
$numbers = range(1, 5);
$count = count($numbers);
$array = array();
genNum($array, $numbers, $count, 0, '');
sort($array);
echo implode("<br />\n", $array);
?>