多位个数字 ,不同组合排列之和 (不重复,所有可能的组合之和) PHP

数组

$array = [1,2,3,4]; // 多位数也可以

以下是所需的结果

多位个数字 ,不同组合排列之和 (不重复,所有可能的组合之和) PHP

以下是具体实现代码

   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;
    }

如果有更好的方式,也请大家评论提供参考