Проверка на десятичную систему

199
21 сентября 2018, 07:50

Столкнулся с проблемой, проверки числа на десятичную систему.

Допустим передают число 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);

Есть какой то встроенный метод проверки системы числа? Или кто то уже сталкивался и есть решение

Answer 1

Дело в том, что не для строк не существует никаких систем счислений:

var_dump([
    100,
    0100,
    0x100,
    0b100
]); // [100, 64, 256, 4]

Это просто способ указать литерал в другой системе счисления, такая форма абсолютно неотличима от своего значения в десятичном виде:

var_dump([
    0100 === 64,
    0x100 === 256,
    0b100 === 4
]); // [true, true, true]

Не имеет смысла пытаться отличить 042 от 34. Оба литерала обозначают одно и то же число. Если в итоге получается не то, что клиентский код имел в виду - виноват клиентский код.

Answer 2

Пока все настаивали и говорили что нельзя такого сделать и ставили минусы к вопросу я нашёл ответ на английском стаке. Надеюсь в дальнейшем поможет кому либо

function is_decimal( $val )
{
    return is_numeric( $val ) && floor( $val ) != $val;
}

https://stackoverflow.com/questions/6772603/check-if-number-is-decimal

Спасибо всем кто говорил что такого нельзя сделать и не имеет смысла

READ ALSO
Непонятки с буферизацией ob_start()

Непонятки с буферизацией ob_start()

Почему повторяется слово hello? Что нужно добавить, что бы нормально вывело hello world?

177
Заполнение массива данными php

Заполнение массива данными php

Есть форма вводаНадо заполнить массив данными из формы и вывести

198
Переключение чекбокса

Переключение чекбокса

На странице есть чекбокс

216
Фильтр подбора товаров и вывода из бд

Фильтр подбора товаров и вывода из бд

Есть форма фильтра, в этой форме 4 select(выбора категории товара) и кнопка подобрать товарНужно сделать так чтобы при нажатии на эту кнопку выводились...

201