没有找到PHP版本的 贴一下参考C#的
$_arr = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
function getSetBySum($_array, $_sum, $_index, $_current, $_return=''){
for($i = $_index; $i < count($_array); $i++){
if($_current-$_array[$i] == 0 && $_sum-$_array[$i] ==0){ //找到一个
$_return .= $_array[$i].'<br/>';
echo $_return;
}else if($_current-$_array[$i] > 0 ){ //继续找
$_return .= $_array[$i].',';
$_sum -= $_array[$i];
for( $j = $i+1; $j<count($_array); $j++){
getSetBySum($_array,$_sum,$j,$_current-$_array[$i],$_return);
}
}
}
}
for($t = 0; $t < count($_arr); $t++){
getSetBySum($_arr,20,$t, 20);
}