Trong PHP 5, tôi sử dụng intval() bất cứ khi nào tôi nhận được số làm đầu vào. Bằng cách này, tôi muốn đảm bảo rằng tôi không nhận được chuỗi hoặc số nổi. Số đầu vào của tôi tất cả phải là số nguyên. Nhưng khi tôi nhận được số> = 2147483647, giới hạn số nguyên đã ký được vượt qua.PHP: intval() tương đương với số> = 2147483647
Tôi có thể làm gì để có giá trị intval() tương đương với các số ở mọi kích thước?
Đây là những gì tôi muốn có:
<?php
$inputNumber = 3147483647.37;
$intNumber = intvalEquivalent($inputNumber);
echo $intNumber; // output: 3147483647
?>
Cảm ơn bạn rất nhiều trước!
Chỉnh sửa: Dựa trên một số câu trả lời, tôi đã cố gắng viết mã một hàm tương đương. Nhưng nó không hoạt động chính xác như intval(). Làm thế nào tôi có thể cải thiện nó? Điều gì là sai với nó?
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;
}
}
}
Vì vậy, những gì chính xác không hoạt động trong đó và những gì xảy ra với các giải pháp khác ở đây, bao gồm cả regex? –