一个小小的算法有关问题

WBOY
發布: 2016-06-13 12:17:37
原創
853 人瀏覽過

一个小小的算法问题
比如:我们充值话费的时候,充大于10元送1元话费,充大于50元送5元话费。

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

老大,帮我看下吧

<br />$a = array('50'=>'5','10'=>'1');<br />$s = 51;<br />function test($s,$a){<br />	$flag = 0;<br />	foreach($a as $k=>$v){<br />		if($s >=$k){<br />			$flag=$v;<br />		}<br />	}<br />	return $flag;<br />}<br />echo test($s,$a);<br />
登入後複製

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

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


<br />[code=php]$a = array('50'=>'5','10'=>'1');<br />$s = 51;<br />function test($s,$a){<br />    $flag = 0;<br />    foreach($a as $k=>$v){<br />        if($s >=$k){<br />if($flag<$v)           <br /> $flag=$v;<br />           <br />        }<br />    }<br />    return $flag;<br />}<br />echo test($s,$a);
登入後複製

[/code]

数组是排列不规则的话就这样

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!