How to generate all possible permutations of a string in PHP

1 Answer

0 votes
function swap(&$s, $i, $j) {
    $tmp = $s[$i];
    $s[$i] = $s[$j];
    $s[$j] = $tmp;
}   

function generate_permutations($s, $i, $len) {
    if ($i == $len)
       echo "$s\n";
    else {
        for ($j = $i; $j < $len; $j++) {
            swap($s, $i, $j);
            generate_permutations($s, $i + 1, $len);
        }
    }
}

 
$s = "ab";
generate_permutations($s, 0, strlen($s)); 
 
echo "\n";
 
$s = "abc";
generate_permutations($s, 0, strlen($s)); 
 
echo "\n";
 
$s = "abcd";
generate_permutations($s, 0, strlen($s)); 




        
/*
run:
             
ab
ba

abc
acb
bac
bca
cab
cba

abcd
abdc
acbd
acdb
adbc
adcb
bacd
badc
bcad
bcda
bdac
bdca
cabd
cadb
cbad
cbda
cdab
cdba
dabc
dacb
dbac
dbca
dcab
dcba
      
*/

 



answered May 31, 2017 by avibootz
edited Dec 18, 2023 by avibootz
...