Heim > Backend-Entwicklung > PHP-Tutorial > 求指教一个区间查值的问题

求指教一个区间查值的问题

WBOY
Freigeben: 2016-06-20 12:36:58
Original
920 Leute haben es durchsucht

 

 if($bbb>0&&$bbb<=100){$baifen=100;}            elseif($bbb>100&&$bbb<=500){$baifen=500;}            elseif($bbb>500&&$bbb<=1000){$baifen=1000;}            elseif($bbb>1000&&$bbb<=5000){$baifen=5000;}
Nach dem Login kopieren

要实现这样一个功能
想简化写法 然后去网上搜到了二分法非递归的 但自己改了下 没有改成功
$arr[0,100,500,1000,5000];$b[100,500,1000,5000];
Nach dem Login kopieren

小于0的不考虑
想实现 如果$val=100 结果是$b[0];
有没有大神教我下用二分法非递归的 怎么改 实现这个

这个是网上找的原始的代码
function binarySearch($array,$value){		//起始位置,你可以作为函数参数		$low = 0;		$high = count($array)-1;		while($low <= $high){			$mid = ceil(($low+$high)/2);			if($array[$mid] == $value)				return $mid;			if($array[$mid] < $value){				$low = $mid + 1;			}			if($array[$mid] > $value){				$high = $mid - 1;			}		}		return -1;	}
Nach dem Login kopieren


我修改了下 无法实现 感谢


回复讨论(解决方案)

直接条件比较

if($bbb > 1000) ) $baifen = 5000;elseif($bbb > 500) $baifen = 1000;elseif($bbb > 100) $baifen = 500;elseif($bbb > 0) $baifen = 100;
Nach dem Login kopieren
Nach dem Login kopieren


使用字典
$dict = array(0 => 100, 100 => 500, 500 => 1000, 1000 => 5000);krsort($dict);foreach($$dict as $k=>$v) if($x > $k) break;echo $v;
Nach dem Login kopieren
Nach dem Login kopieren

直接条件比较

if($bbb > 1000) ) $baifen = 5000;elseif($bbb > 500) $baifen = 1000;elseif($bbb > 100) $baifen = 500;elseif($bbb > 0) $baifen = 100;
Nach dem Login kopieren
Nach dem Login kopieren


使用字典
$dict = array(0 => 100, 100 => 500, 500 => 1000, 1000 => 5000);krsort($dict);foreach($$dict as $k=>$v) if($x > $k) break;echo $v;
Nach dem Login kopieren
Nach dem Login kopieren



感谢 。。 请教一下   返回$v 是得到那个最大值  比如 $x=101 $v返回的是500 。。。 我想返回的是1   因为他是在第二个范围内 ,我是取第一范围得到什么值  第二范围得到什么值~~   该如何返回     感谢版主~~
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage