小唯快跑啊
支持任意数量组合,其中combine($arr, 3)方法中的3表示以3个为1组。这些组合中去除了会出现重复数字的组合。<?php$arr = [1, 2, 3, 4, 5];function combine($arr, $length) {
$result = [];
_combine($arr, $length, 0, [], $result); return $result;
}function _combine($arr, $length, $start, $path, &$result) { if(count($path)==$length) { return $result[] = $path;
} for ($i=$start; $i<count($arr); $i++) { if($i==$start || $arr[$i]!=$arr[$i-1]) {
$path[]=$arr[$i];
_combine($arr, $length, $i+1, $path, $result);
array_pop($path);
}
}
}
var_dump(combine($arr, 3));