Приведение типа переменной в PHP для последующей записи в БД не имеет смысла. Либо ты используешь prepared, либо формируешь строку запроса руками, соответственно число тоже будет представлено как строка.
Далее, на разных ОС и разных платформах PHP_INT_MAX различается. Т.е. приводить ТУПО строку к (int) - абсолютно не правильное решение. Если ты оперируешь большими числами, выходящими за пределы PHP_INT_MAX, то приведение к int просто урежет число. А числа, выходящие за пределы PHP_INT_MAX, PHP интерпретирует как числа с плавающей точкой.
Когда я писал свою
обертку под mysql, то у меня возникла задача - проверять, является ли переменная числом, целым или с плавающей точкой.
В итоге получился вот такой код, который покрывает все тесты:
Определение integer:
https://github.com/Vasiliy-Makogon/PHP-Class-to-sa...
Определение float:
https://github.com/Vasiliy-Makogon/PHP-Class-to-sa...