PHP数组任意N个数相加等于一个定数

1 /** 2 * @param array $cc 所需数组 3 * @param int $val 指定值 4 * @return array 5 */ 6 function demo($cc, $val) 7 { 8 for ($i = 1; $i < 1 << count($cc); $i++) { 9 $sum = 0; 10 $temp = ""; 11 for ($j = 0; $j < count($cc); $j++) { 12 if (($i & 1 << $j) != 0) { 13 14 $sum += $cc[$j]; 15 $temp .= $cc[$j] . "+"; 16 } 17 } 18 if ($sum == $val) { 19 $arr[] = trim($temp, '+'); 20 } 21 } 22 return $arr; 23 } 24 25 $cc = array(12, 12, 5, 9, 12, 5, 7, 5, 7, 9, 12,); 26 echo "<pre>"; 27 print_r(demo($cc, 25));