3v4l.org

run code in 300+ PHP versions simultaneously
<?php function permutations($set) { $solutions=array(); $n=count($set); $p=array_keys($set); $i=1; while ($i<$n) { if ($p[$i]>0) { $p[$i]--; $j=0; if ($i%2==1) $j=$p[$i]; //swap $tmp=$set[$j]; $set[$j]=$set[$i]; $set[$i]=$tmp; $i=1; $solutions[]=$set; } elseif ($p[$i]==0) { $p[$i]=$i; $i++; } } return $solutions; } $set=array("x1", "x2", "x3"); print_r(permutations($set));

preferences:
62.22 ms | 402 KiB | 5 Q