php 利用二分法查詢ip範圍

2021-08-28 12:56:55 字數 956 閱讀 1386

假如業務流程中需要驗證使用者的ip位址,隨著資料庫中儲存的授權ip不停的增加,如何快速便捷的查詢到對應的ip顯得至關緊要,本文利用ip轉為對應的整數,然後利用二分法查詢,實現業務需求(好記性不如爛筆頭)

具體**示例

<?php  

//待驗證ip

$ip='58.33.179.25';

//業務中資料庫儲存類似的資料結構,業務目標是查詢ip是否在這些城市中

$example = ['beijing'=>'[email protected]@58.117.128.0-58.117.129.255',

'shanghai'=>'[email protected]@58.33.160.0-58.33.179.255',

'guangzhou'=>'[email protected]@219.136.0.0-219.136.6.255'];

$arr = ;

foreach ($example as $k => $v)

}//二維陣列以鍵名公升序排列

ksort($arr);

$iparr = ;

foreach ($arr as $k => $v)

//二分法查詢匹配ip

$low = 0;

$top = count($iparr)-1;

$isfind = 0;

$target = sprintf("%u",ip2long($ip));

while ($low <= $top) elseif ($target > $iparr[$mid]['start']) else

}if ($isfind)

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...

python二分法查詢 Python 二分法查詢

二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...

二分法查詢

前幾天csdn上說只有10 程式設計師能寫出正確的二分法查詢 so.我在看過二分法查詢方法後寫了乙個 一次測試成功.範圍 需要次數 10 4 100 7 1000 10 10000 14 100000 17 1000000 20 除了對特別小的陣列外,二分法查詢表現是非常優秀的.每次對範圍加倍可以建...