P.S Автор не я. нашол в нете
$s = "123456";
$len = strlen($s) - 1;
$result = array();
while (TRUE) {
$result[] = $s;
for($i = $len; $i >= 0; $i--) {
if (isset($s[$i+1]) && $s[$i] <= $s[$i+1]) {
break;
}
}
if ($i < 0) break;
for($j = $len; $s[$i] > $s[$j]; $j--);
$t = $s[$j];
$s[$j] = $s[$i];
$s[$i] = $t;
for($k = $i+1, $r = $len; $r > $k; $k++, $r--) {
$t = $s[$r];
$s[$r] = $s[$k];
$s[$k] = $t;
}
}