多位个数字 ,不同组合排列之和 (不重复,所有可能的组合之和) PHP
数组
$array = [1,2,3,4]; // 多位数也可以
以下是所需的结果
以下是具体实现代码
public function getSortCartList($array,$level = -1,&$list =[])
{
for ($i=0; $i < count($array); $i++) {
if($level < 0){
//第一级直接输出对应数字
$list[] = $array[$i];
}else{
$values = $array[$i];
//根据等级组装前几位
for ($k=0; $k < $level ; $k++) {
$values .= '+'.$array[$i+$k+1];
}
$j= 0;
//循环拼合最后一位
for ($n=($i+$level+1); $n < count($array); $n++) {
$j++;
$first = $values; // 组合上几位
$first .= '+'.$array[$n];
$list[] = $first;
}
//到最后一位结束递归
if($j == 1){
break;
}
}
}
//长度大于等级+2停止递归
if(($level+2) < count($array)){
$this->getSortCartList($array,$level+1,$list);
}
return $list;
}
如果有更好的方式,也请大家评论提供参考