= $len) { if(!array_key_exists ($res, $dupl)) { $dupl[$res] = true; $f($res); } } else { for($i = 0; $i < count($ca); $i++) { if(!$used[$i]) { $used[$i] = true; perm_help($ca, $res . $ca[$i], $used, $dupl, $len, $f); $used[$i] = false; } } } } function perm($ca, $len, $f) { $used = array_fill(0, count($ca), false); $dupl = array(); perm_help($ca, '', $used, $dupl, $len, $f); } function printperm($res) { echo "$res\r\n"; } perm(array('A', 'B', 'C', 'D', 'E'), 4, 'printperm'); perm(array('A', 'A', 'B'), 2, 'printperm'); ?>