<?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);
                $outstr = substr($outstr, 0, strlen($outstr)-1);
        }
}

$arr = array('A','B','C','D');
for($i=1; $i<=4; $i++) {
        echo "Combinations of length $i\n";
        $out = array();
        combine($arr, $out, 0, $i);
        var_dump($out);
}
