<?php
function combine($inputArray, &$outputArray, $index, $combLen) {
global $outstr;
for ($i = $index; $i < count($inputArray); $i++) { $outstr.=$inputArray[$i];
if(strlen($outstr) == $combLen) { $outputArray[]= $outstr;
}
combine($inputArray, $outputArray, $i + 1, $combLen);
}
}
$arr = array('A','B','C','D'); for($i=1; $i<=4; $i++) {
echo "Combinations of length $i\n";
combine($arr, $out, 0, $i);
}
PD9waHAKCmZ1bmN0aW9uIGNvbWJpbmUoJGlucHV0QXJyYXksICYkb3V0cHV0QXJyYXksICRpbmRleCwgJGNvbWJMZW4pIHsKICAgICAgICBnbG9iYWwgJG91dHN0cjsKICAgICAgICBmb3IgKCRpID0gJGluZGV4OyAkaSA8IGNvdW50KCRpbnB1dEFycmF5KTsgJGkrKykgewogICAgICAgICAgICAgICAgJG91dHN0ci49JGlucHV0QXJyYXlbJGldOwogICAgICAgICAgICAgICAgaWYoc3RybGVuKCRvdXRzdHIpID09ICRjb21iTGVuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRvdXRwdXRBcnJheVtdPSAkb3V0c3RyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29tYmluZSgkaW5wdXRBcnJheSwgJG91dHB1dEFycmF5LCAkaSArIDEsICRjb21iTGVuKTsKICAgICAgICAgICAgICAgICRvdXRzdHIgPSBzdWJzdHIoJG91dHN0ciwgMCwgc3RybGVuKCRvdXRzdHIpLTEpOwogICAgICAgIH0KfQoKJGFyciA9IGFycmF5KCdBJywnQicsJ0MnLCdEJyk7CmZvcigkaT0xOyAkaTw9NDsgJGkrKykgewogICAgICAgIGVjaG8gIkNvbWJpbmF0aW9ucyBvZiBsZW5ndGggJGlcbiI7CiAgICAgICAgJG91dCA9IGFycmF5KCk7CiAgICAgICAgY29tYmluZSgkYXJyLCAkb3V0LCAwLCAkaSk7CiAgICAgICAgdmFyX2R1bXAoJG91dCk7Cn0K