FILTER_VALIDATE_INT return 始终为假
FILTER_VALIDATE_INT return false always
我正在尝试使用 FILTER_VALIDATE_INT
验证整数。它在 ubuntu 服务器上工作正常,但在我的本地 win 10 xampp 系统上 return 错误。
这是代码
案例 1:
$d = "sdaf";
var_dump(filter_var($d, FILTER_VALIDATE_INT));
OP:布尔值(假)
案例 2:
$d = "9876543210";
var_dump(filter_var($d, FILTER_VALIDATE_INT));
OP:布尔值(假)
案例 3:
var_dump(filter_var(9876543210, FILTER_VALIDATE_INT));
OP:布尔值(假)
在服务器上:
var_dump(filter_var(9876543210, FILTER_VALIDATE_INT));
OP:整数(9876543210)
您是运行在 64 位 windows 和 64 位服务器上运行安装 32 位 Windows 还是 32 位 PHP?
我想你可能是。如果你 运行 这个你会得到正确的结果。您的数字大于 32 位系统的 PHP_INT_MAX
echo PHP_INT_MAX;
$d = "sdaf";
var_dump(filter_var($d, FILTER_VALIDATE_INT));
$d = PHP_INT_MAX;
var_dump(filter_var($d, FILTER_VALIDATE_INT));
var_dump(filter_var(PHP_INT_MAX, FILTER_VALIDATE_INT));
结果:
2147483647
bool(false)
int(2147483647)
int(2147483647)
在 PHP 中你可以有 32 位和 64 位整数。
您可以拥有的最大 32 位整数 2147483647
,比您的 9876543210
.
少
如果你有一个比这个大的数字,它会被转换成一个浮点数,所以 int 验证失败。
如果您不想这样,您需要 PHP 的 64 位版本。
如果您有 windows,则需要 PHP 7 或更高。
为什么? PHP 5.* 的 64 位版本有一个错误,即整数总是 32 位。
更多信息:https://secure.php.net/manual/en/language.types.integer.php
我正在尝试使用 FILTER_VALIDATE_INT
验证整数。它在 ubuntu 服务器上工作正常,但在我的本地 win 10 xampp 系统上 return 错误。
这是代码
案例 1:
$d = "sdaf";
var_dump(filter_var($d, FILTER_VALIDATE_INT));
OP:布尔值(假)
案例 2:
$d = "9876543210";
var_dump(filter_var($d, FILTER_VALIDATE_INT));
OP:布尔值(假)
案例 3:
var_dump(filter_var(9876543210, FILTER_VALIDATE_INT));
OP:布尔值(假)
在服务器上:
var_dump(filter_var(9876543210, FILTER_VALIDATE_INT));
OP:整数(9876543210)
您是运行在 64 位 windows 和 64 位服务器上运行安装 32 位 Windows 还是 32 位 PHP?
我想你可能是。如果你 运行 这个你会得到正确的结果。您的数字大于 32 位系统的 PHP_INT_MAX
echo PHP_INT_MAX;
$d = "sdaf";
var_dump(filter_var($d, FILTER_VALIDATE_INT));
$d = PHP_INT_MAX;
var_dump(filter_var($d, FILTER_VALIDATE_INT));
var_dump(filter_var(PHP_INT_MAX, FILTER_VALIDATE_INT));
结果:
2147483647
bool(false)
int(2147483647)
int(2147483647)
在 PHP 中你可以有 32 位和 64 位整数。
您可以拥有的最大 32 位整数 2147483647
,比您的 9876543210
.
如果你有一个比这个大的数字,它会被转换成一个浮点数,所以 int 验证失败。
如果您不想这样,您需要 PHP 的 64 位版本。
如果您有 windows,则需要 PHP 7 或更高。
为什么? PHP 5.* 的 64 位版本有一个错误,即整数总是 32 位。
更多信息:https://secure.php.net/manual/en/language.types.integer.php