3v4l.org

run code in 300+ PHP versions simultaneously
<?php function &permuteUnique($items) { sort($items); $size = count($items); $return = array(); while (true) { $return[] = $items; $invAt = $size - 2; for (;;$invAt--) { if ($invAt < 0) { break 2; } if ($items[$invAt] < $items[$invAt + 1]) { break; } } $swap1Num = $items[$invAt]; $inv2At = $size - 1; while ($swap1Num >= $items[$inv2At]) { $inv2At--; } $items[$invAt] = $items[$inv2At]; $items[$inv2At] = $swap1Num; $reverse1 = $invAt + 1; $reverse2 = $size - 1; while ($reverse1 < $reverse2) { $temp = $items[$reverse1]; $items[$reverse1] = $items[$reverse2]; $items[$reverse2] = $temp; $reverse1++; $reverse2--; } } return $return; } permuteUnique(array(1,2,3,4,5)) ?>

preferences:
35.98 ms | 402 KiB | 5 Q