欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

一个小小的算法有关问题

程序员文章站 2022-05-28 19:13:58
...
一个小小的算法问题
比如:我们充值话费的时候,充大于10元送1元话费,充大于50元送5元话费。

那么此时,我充值的是51元话费,我怎么去命中的是50元送5元话费,而此时不再命中大于10元送1元话费了。

老大,帮我看下吧

$a = array('50'=>'5','10'=>'1');
$s = 51;
function test($s,$a){
$flag = 0;
foreach($a as $k=>$v){
if($s >=$k){
$flag=$v;
}
}
return $flag;
}
echo test($s,$a);

------解决思路----------------------
$a = array('50'=>'5','10'=>'1');
$s = 51;
function test($s,$a){
$flag = 0;
foreach($a as $k=>$v){
if($s >=$k){
$flag=$v;
break; //这样比较规范(一个模块只有一个出口)
}
}
return $flag;
}
echo test($s,$a);

------解决思路----------------------
引用:
如果$a 换成 $a = array('40'=>'3','50'=>'5','10'=>'1');
那么结果就是3了,这个时候51比50要大,应该是5啊



[code=php]$a = array('50'=>'5','10'=>'1');
$s = 51;
function test($s,$a){
$flag = 0;
foreach($a as $k=>$v){
if($s >=$k){
if($flag $flag=$v;

}
}
return $flag;
}
echo test($s,$a);

[/code]

数组是排列不规则的话就这样
一个小小的算法有关问题

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频