Преобразовать число из одного диапазона в другой. В данном случае я привожу числа в диапазоне 0..150 к 1..100 так что число 0 будет равняться 1, а 150 - 100. Все остальные числа будут распределены пропорционально.
<?php
function mapper($value, $smin, $smax, $dmin, $dmax){
return (($value-$smin) / ($smax-$smin)) * ($dmax-$dmin) + $dmin;
}
foreach(array(0, 10, 27, 58, 150) as $v)
echo mapper($v, 0, 150, 1, 100)."\n";
1
7.6
18.82
39.28
100
Иллюстрация разницы между floor, ceil и round floor - округляет в меньшую сторону, ceil - в большую, а round к ближайшему целому
<?php
$numbers = array(-2.9, -2.5, -2.1, 2.1, 2.5, 2.9);
printf("%-10s%-10s%-10s%-10s\n", '#', 'floor', 'ceil', 'round');
foreach($numbers as $n){
printf('%-10s', ($n<0) ? $n : ' '.$n);
foreach(array('floor', 'ceil', 'round') as $fn){
$i = $fn($n);
printf('%-10s', ($i<0) ? $i : ' '.$i);
}
echo "\n";
}
# floor ceil round
-2.9 -3 -2 -3
-2.5 -3 -2 -3
-2.1 -3 -2 -2
2.1 2 3 2
2.5 2 3 3
2.9 2 3 3
Получить минимальное/максимальное значение из набора цифр
<?php
echo max(1, 3, 5, 6, 7);
7
echo max(array(2, 4, 5));
5
echo min(2, 3, 1, 6, 7);
1
echo min(array(2, 4, 5));
2
Источник:
- 3 - ru.php.net