Home  >  Article  >  Backend Development  >  求指教一个区间查值的问题

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

WBOY
WBOYOriginal
2016-06-20 12:36:58885browse

 

 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;}

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

小于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;	}


我修改了下 无法实现  感谢 


回复讨论(解决方案)

直接条件比较

if($bbb > 1000) ) $baifen = 5000;elseif($bbb > 500) $baifen = 1000;elseif($bbb > 100) $baifen = 500;elseif($bbb > 0) $baifen = 100;


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

直接条件比较

if($bbb > 1000) ) $baifen = 5000;elseif($bbb > 500) $baifen = 1000;elseif($bbb > 100) $baifen = 500;elseif($bbb > 0) $baifen = 100;


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



感谢 。。 请教一下   返回$v 是得到那个最大值  比如 $x=101 $v返回的是500 。。。 我想返回的是1   因为他是在第二个范围内 ,我是取第一范围得到什么值  第二范围得到什么值~~   该如何返回     感谢版主~~
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn