Функция поиска диапазонов карт с использованием разных масштабов.Так что это легко сделать:
function map($value, $fromLow, $fromHigh, $toLow, $toHigh) {
$fromRange = $fromHigh - $fromLow;
$toRange = $toHigh - $toLow;
$scaleFactor = $toRange / $fromRange;
// Re-zero the value within the from range
$tmpValue = $value - $fromLow;
// Rescale the value to the to range
$tmpValue *= $scaleFactor;
// Re-zero back to the to range
return $tmpValue + $toLow;
}
Так что, в основном, это будет заново основывать число в пределах диапазона.Теперь обратите внимание, что нет проверки ошибок, если значение находится в любом диапазоне.Причина в том, что он отображает шкалы , а не диапазоны.Таким образом, вы можете использовать его для базового преобразования:
$feet = map($inches, 0, 12, 0, 1);
И вы также можете отобразить «диапазоны», поскольку он повторно основывает число (перемещает его вдоль числовой линии):
5 == map(15, 10, 20, 0, 10);
Таким образом, для диапазона (0, 1000) и диапазона (0, 5) следующая таблица будет иметь значение true:
- -200 |-1
- 0 |0
- 1 |0,005
- 100 |0,5
- 200 |1
- 400 |2
- 600 |3
- 800 |4
- 1000 |5
- 2000 |10
- 3000 |15
И чтобы показать перебазирование, если мы сопоставим (0, 1000) с (5, 10):
- -200 |4
- 0 |5
- 1 |5,005
- 100 |5,5
- 200 |6
- 400 |7
- 600 |8
- 800 |9
- 1000 |10
- 2000 |15
- 3000 |20