fork download
  1. <?php
  2.  
  3.  
  4. $elements = [1, 2, 3];
  5.  
  6. function factorial($n){
  7. if($n <= 1){
  8. return 1;
  9. } else {
  10. return $n * factorial($n - 1);
  11. }
  12. }
  13.  
  14. function getCombinations($elements){
  15. //print_r($elements);
  16. if(count($elements) == 1){
  17. return [$elements];
  18. }
  19. $result = [];
  20. foreach($elements as $key => $element){
  21. $first = $element;
  22. $firstKey = $key;
  23. unset($elements[$key]);
  24. $combinations = getCombinations($elements);
  25. $elements[] = $first;
  26. print_r($elements);
  27. foreach($combinations as &$combination){
  28. array_unshift($combination, $first);
  29. $result[] = $combination;
  30. }
  31.  
  32. }
  33. return $result;
  34. }
  35.  
  36. $result = getCombinations($elements);
  37. //print_r($result);
Success #stdin #stdout 0.02s 26216KB
stdin
Standard input is empty
stdout
Array
(
    [2] => 3
    [3] => 2
)
Array
(
    [3] => 2
    [4] => 3
)
Array
(
    [1] => 2
    [2] => 3
    [3] => 1
)
Array
(
    [3] => 1
    [4] => 3
)
Array
(
    [4] => 3
    [5] => 1
)
Array
(
    [2] => 3
    [3] => 1
    [4] => 2
)
Array
(
    [4] => 2
    [5] => 1
)
Array
(
    [5] => 1
    [6] => 2
)
Array
(
    [3] => 1
    [4] => 2
    [5] => 3
)