<?php
function Combinations($arr,$n){
if(count($arr) === 0) return; if($n === 1){
$out = [];
foreach($arr as $b){
$out[] = [$b];
}
return $out;
}else{
$base = Combinations($arr,$n-1);
$out = [];
foreach($base as $val){
$last = $val[$n-2];
$found = false;
foreach($arr as $key => $value){
if($found === true){
$new[]=$value;
}
continue;
}
if($value === $last)
$found = true;
}
}
}
return $out;
}
$b= Combinations
(array(1,2,3,4),4); $b[]= Combinations
(array(1,2,3,4),3); $b[]= Combinations
(array(1,2,3,4),2);
PD9waHAKCmZ1bmN0aW9uIENvbWJpbmF0aW9ucygkYXJyLCRuKXsKCglpZihjb3VudCgkYXJyKSA9PT0gMCkgcmV0dXJuOwogICAgaWYoJG4gPT09IDEpewogICAgICAgICRvdXQgPSBbXTsKICAgICAgICBmb3JlYWNoKCRhcnIgYXMgJGIpewogICAgICAgICAgICAkb3V0W10gPSBbJGJdOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJG91dDsKICAgIH1lbHNlewoKICAgICAgICAkYmFzZSA9IENvbWJpbmF0aW9ucygkYXJyLCRuLTEpOwoJCSRvdXQgPSBbXTsKICAgICAgIAogICAgICAgIGZvcmVhY2goJGJhc2UgYXMgJHZhbCl7CgogICAgICAgICAgICAkbGFzdCA9ICR2YWxbJG4tMl07CiAgICAgICAgICAgICRmb3VuZCA9IGZhbHNlOwogICAgICAgICAgICBmb3JlYWNoKCRhcnIgYXMgJGtleSA9PiAkdmFsdWUpewogICAgICAgICAgICAJIGlmKCRmb3VuZCA9PT0gdHJ1ZSl7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRrZXkgPCBjb3VudCgkYXJyKSl7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5ldyA9IGFycmF5X3NsaWNlKCR2YWwsMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmV3W109JHZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG91dFtdID0gYXJyYXlfc2xpY2UoJG5ldywwKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmKCR2YWx1ZSA9PT0gJGxhc3QpCiAgICAgICAgICAgICAgICAgICAgJGZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgfQoKICAgIHJldHVybiAkb3V0OwoKCn0KJGI9IENvbWJpbmF0aW9ucyhhcnJheSgxLDIsMyw0KSw0KTsKJGJbXT0gQ29tYmluYXRpb25zKGFycmF5KDEsMiwzLDQpLDMpOwokYltdPSBDb21iaW5hdGlvbnMoYXJyYXkoMSwyLDMsNCksMik7CnByaW50X3IoJGIpOw==