Столкнулся с проблемой, проверки числа на десятичную систему.
Допустим передают число 042 для редактирования 42 записи, вместо этого php отдаёт 34. Методом гугления не нашёл ничего(может запрос не правильно формулировал) что бы проверить на систему числа(2, 8, 10, 16).
Мой костыль проверка даёт эффект не всегда, только когда параметр string
if (substr($param[0], 0, 1) == 0 || substr($param[0], 0, 2) == "0x" || substr($param[0], 0, 2) == "0b") Throw new Exception($message);
Есть какой то встроенный метод проверки системы числа? Или кто то уже сталкивался и есть решение
Дело в том, что не для строк не существует никаких систем счислений:
var_dump([
100,
0100,
0x100,
0b100
]); // [100, 64, 256, 4]
Это просто способ указать литерал в другой системе счисления, такая форма абсолютно неотличима от своего значения в десятичном виде:
var_dump([
0100 === 64,
0x100 === 256,
0b100 === 4
]); // [true, true, true]
Не имеет смысла пытаться отличить 042 от 34. Оба литерала обозначают одно и то же число. Если в итоге получается не то, что клиентский код имел в виду - виноват клиентский код.
Пока все настаивали и говорили что нельзя такого сделать и ставили минусы к вопросу я нашёл ответ на английском стаке. Надеюсь в дальнейшем поможет кому либо
function is_decimal( $val )
{
return is_numeric( $val ) && floor( $val ) != $val;
}
https://stackoverflow.com/questions/6772603/check-if-number-is-decimal
Спасибо всем кто говорил что такого нельзя сделать и не имеет смысла
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Почему повторяется слово hello? Что нужно добавить, что бы нормально вывело hello world?
Есть форма фильтра, в этой форме 4 select(выбора категории товара) и кнопка подобрать товарНужно сделать так чтобы при нажатии на эту кнопку выводились...