В PHP 5 я использую intval() всякий раз, когда в качестве входных данных я получаю числа. Таким образом, я хочу убедиться, что не получаю строк или чисел с плавающей запятой. Все мои входные числа должны быть целыми числами. Но когда я получаю числа >= 2147483647, предел целого числа со знаком пересекается.
Что я могу сделать, чтобы иметь эквивалент intval() для чисел всех размеров?
Вот что я хочу иметь:
<?php
$inputNumber = 3147483647.37;
$intNumber = intvalEquivalent($inputNumber);
echo $intNumber; // output: 3147483647
?>
Заранее большое спасибо!
Изменить. Основываясь на некоторых ответах, я попытался закодировать эквивалентную функцию. Но пока это работает не так, как intval(). Как я могу улучшить его? Что с этим не так?
function intval2($text) {
$text = trim($text);
$result = ctype_digit($text);
if ($result == TRUE) {
return $text;
}
else {
$newText = sprintf('%.0f', $text);
$result = ctype_digit($newText);
if ($result == TRUE) {
return $newText;
}
else {
return 0;
}
}
}