fork(5) download
  1. <?php
  2.  
  3. function combine($inputArray, &$outputArray, $index, $combLen) {
  4. global $outstr;
  5. for ($i = $index; $i < count($inputArray); $i++) {
  6. $outstr.=$inputArray[$i];
  7. if(strlen($outstr) == $combLen) {
  8. $outputArray[]= $outstr;
  9. }
  10. combine($inputArray, $outputArray, $i + 1, $combLen);
  11. $outstr = substr($outstr, 0, strlen($outstr)-1);
  12. }
  13. }
  14.  
  15. $arr = array('A','B','C','D');
  16. for($i=1; $i<=4; $i++) {
  17. echo "Combinations of length $i\n";
  18. $out = array();
  19. combine($arr, $out, 0, $i);
  20. var_dump($out);
  21. }
  22.  
Success #stdin #stdout 0.02s 13112KB
stdin
Standard input is empty
stdout
Combinations of length 1
array(4) {
  [0]=>
  string(1) "A"
  [1]=>
  string(1) "B"
  [2]=>
  string(1) "C"
  [3]=>
  string(1) "D"
}
Combinations of length 2
array(6) {
  [0]=>
  string(2) "AB"
  [1]=>
  string(2) "AC"
  [2]=>
  string(2) "AD"
  [3]=>
  string(2) "BC"
  [4]=>
  string(2) "BD"
  [5]=>
  string(2) "CD"
}
Combinations of length 3
array(4) {
  [0]=>
  string(3) "ABC"
  [1]=>
  string(3) "ABD"
  [2]=>
  string(3) "ACD"
  [3]=>
  string(3) "BCD"
}
Combinations of length 4
array(1) {
  [0]=>
  string(4) "ABCD"
}