PHP:intval() 等价于数字 >= 2147483647
在 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;
}
}
}