首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FILTER_VALIDATE_INT总是返回false

FILTER_VALIDATE_INT总是返回false
EN

Stack Overflow用户
提问于 2017-01-19 10:41:38
回答 2查看 770关注 0票数 0

我正在尝试使用FILTER_VALIDATE_INT验证整数。它在ubuntu服务器上运行良好,但在本地win 10 xampp系统上返回false。

这是代码

案例1:

代码语言:javascript
复制
$d = "sdaf";
var_dump(filter_var($d, FILTER_VALIDATE_INT));

执行部分:bool(假)

案例2:

代码语言:javascript
复制
$d = "9876543210";
var_dump(filter_var($d, FILTER_VALIDATE_INT));

执行部分:bool(假)

案例3:

代码语言:javascript
复制
var_dump(filter_var(9876543210, FILTER_VALIDATE_INT));

执行部分:bool(假)

在服务器上:

代码语言:javascript
复制
var_dump(filter_var(9876543210, FILTER_VALIDATE_INT));

执行部分: int(9876543210)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-19 10:48:40

您是在运行32位Windows,还是在64位窗口上运行32位PHP,以及在64位服务器上运行?

我想你可能是。如果您运行这个程序,您将得到正确的结果。您的数字比32位系统的PHP_INT_MAX要大。

代码语言:javascript
复制
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));

结果:

代码语言:javascript
复制
2147483647

bool(false)

int(2147483647)

int(2147483647)
票数 1
EN

Stack Overflow用户

发布于 2017-01-19 10:49:33

在PHP中,可以有32位和64位整数。

您可以拥有的最大32位整数,它是2147483647,它小于您的9876543210

如果您有一个更大的数字,则它将转换为浮点数,因此int验证失败。

如果您不想这样做,您需要有一个64位版本的PHP。

如果您有windows,则需要PHP 7或更高版本。

为什么? PHP 5.*的64位版本存在一个整数总是32位的错误。

更多信息:https://secure.php.net/manual/en/language.types.integer.php

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41739750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档