数组中取N个值相加等于某个固定值的所有组合 例如一组数[1,2,3,4,5,6,7,9,10]计算所有相加值等于12的所有组合3,92,102,3,56,4,21,2,3,61,2,4,5 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 $arr = [1,2,3,4,5,6,7,8,9,10];$sum = 12;$len = count($arr);$data = [];function s($arr,&$data=[],$i=0,$length=0){ $len = count($data); for($j=$length;$j<$len;$j++){ foreach($arr as $k=>$v){ if($k+$i+1<count($arr)){ $str = $arr[$k+$i+1]; $sa = explode(',',$data[$j]); foreach($sa as $item){ if($item > $str){ continue 2; } } if(in_array($str,$sa)){ continue; }else{ if(implode(",",$sa) == ""){ continue; }else{ $s = implode(",",$sa).",".$str; $data[] = $s; } } }else{ break; } } } $i++; if($i>count($arr)){ return $data; }else{ return s($arr,array_unique($data),$i,$len); }}echo "<pre >";$data = s($arr,$arr);//帅选满足条件的数组function gf($data,$sum){ echo count($data)."--c<br />"; $newData = []; foreach($data as $k=>$v){ $a = explode(",",$v); $sums = array_sum($a); //echo $sums."<br />"; if($sums == $sum){ $newData[] = $v; }else{ continue; } } return $newData;}echo "<pre >";$datas = gf($data,$sum);var_dump($datas);自己组装成一个函数吧 这是考验 最难的都解决了 PHP mail函数的问题 求能实现封杀IP功能的留言板。。。 PHP模拟POST aspx页面不成功 有没有简单一些的开源PHP SNS系统,大家帮忙推荐一下 帮忙看一下这个软件,只能在linux系统里安装么? 下面这段代码是什么意思呢? 大家谁做过网站估价呀?比如世纪佳缘这种网站。 如何才能查看PHP内置函数源代码? thinkphp 3.2 多表查询 为什么 phpwrod 不能读取word文档里面的内容 PHP写解析json写入数据到数据库
$sum = 12;
$len = count($arr);
$data = [];
function s($arr,&$data=[],$i=0,$length=0){
$len = count($data);
for($j=$length;$j<$len;$j++){
foreach($arr as $k=>$v){
if($k+$i+1<count($arr)){
$str = $arr[$k+$i+1];
$sa = explode(',',$data[$j]);
foreach($sa as $item){
if($item > $str){
continue 2;
}
}
if(in_array($str,$sa)){
continue;
}else{
if(implode(",",$sa) == ""){
continue;
}else{
$s = implode(",",$sa).",".$str;
$data[] = $s;
}
}
}else{
break;
}
}
} $i++;
if($i>count($arr)){
return $data;
}else{
return s($arr,array_unique($data),$i,$len);
}
}
echo "<pre >";
$data = s($arr,$arr);
//帅选满足条件的数组
function gf($data,$sum)
{
echo count($data)."--c<br />";
$newData = [];
foreach($data as $k=>$v){
$a = explode(",",$v);
$sums = array_sum($a);
//echo $sums."<br />";
if($sums == $sum){
$newData[] = $v;
}else{
continue;
}
}
return $newData;
}
echo "<pre >";
$datas = gf($data,$sum);
var_dump($datas);自己组装成一个函数吧 这是考验 最难的都解决了