У меня есть 2-мерные массивы в php, содержащие диапазоны.например:
From.........To
---------------
125..........3957
4000.........5500
5217628......52198281
52272128.....52273151
523030528....523229183
и т. д.
, и это очень длинный список.Теперь я хочу увидеть, находится ли число, данное пользователем, в диапазоне.например, номера 130, 4200, 52272933 находятся в моем диапазоне, а номера 1, 5600 - нет.
Конечно, я могу сосчитать все индексы и посмотреть, больше ли мой номер, чем первый, и меньше, чем второй элемент.но есть ли более быстрый алгоритм или более эффективный способ сделать это с помощью функции php?
добавлено позже
Он отсортирован.на самом деле это числа, созданные с помощью ip2long (), показывающие все IP-адреса страны.Я просто написал код для него:
$ips[1] = array (2,20,100);
$ips[2] = array (10,30,200);
$n=11;// input ip
$count = count($ips);
for ($i = 0; $i <= $count; $i++) {
if ($n>=$ips[1][$i]){
if ($n<=$ips[2][$i]){
echo "$i found";
break;
}
}else if($n<$ips[1][$i]){echo "not found";break;}
}
в этой ситуации числа 2,8,22 и 200 находятся в диапазоне.но не цифры 1,11,300