ホームページ > バックエンド開発 > PHPチュートリアル > 間隔値のチェックに関する問題についてアドバイスをお願いします。

間隔値のチェックに関する問題についてアドバイスをお願いします。

WBOY
リリース: 2016-06-20 12:36:58
オリジナル
946 人が閲覧しました

 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];
ログイン後にコピー


に関係なく、$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;
ログイン後にコピー
ログイン後にコピー



ありがとうございます。 。たとえば、$x=101 $v は 500 を返します。 。 。 2 番目の範囲にあるので、返したいのは 1 です。最初の範囲からどのような値を取得しますか?~どうやって返すのですか?~~
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート