php 检查整数,在PHP中检查变量是否为整数

当前“最佳答案”不正确..

使用is_numeric()检查变量是否是一个整数是一个坏主意。

例如,该函数将发送TRUE为3.14。这不是预期的行为

要正确执行此操作,您可以使用以下选项之一:

考虑这个变量数组:

$variables = [

"TEST 0" => 0,

"TEST 1" => 42,

"TEST 2" => 4.2,

"TEST 3" => .42,

"TEST 4" => 42.,

"TEST 5" => "42",

"TEST 6" => "a42",

"TEST 7" => "42a",

"TEST 8" => 0x24,

"TEST 9" => 1337e0

];

第一个选项(FILTER_VALIDATE_INT方式):

# Check if your variable is an integer

if( ! filter_var($variable, FILTER_VALIDATE_INT) ){

echo "Your variable is not an integer";

}

输出:

TEST 0 : 0 (type:integer) is not an integer ✘

TEST 1 : 42 (type:integer) is an integer ✔

TEST 2 : 4.2 (type:double) is not an integer ✘

TEST 3 : 0.42 (type:double) is not an integer ✘

TEST 4 : 42 (type:double) is an integer ✔

TEST 5 : 42 (type:string) is an integer ✔

TEST 6 : a42 (type:string) is not an integer ✘

TEST 7 : 42a (type:string) is not an integer ✘

TEST 8 : 36 (type:integer) is an integer ✔

TEST 9 : 1337 (type:double) is an integer ✔

第二个选项(CASTING COMPARISON Way):

# Check if your variable is an integer

if ( strval($variable) != strval(intval($variable)) ) {

echo "Your variable is not an integer";

}

输出:

TEST 0 : 0 (type:integer) is an integer ✔

TEST 1 : 42 (type:integer) is an integer ✔

TEST 2 : 4.2 (type:double) is not an integer ✘

TEST 3 : 0.42 (type:double) is not an integer ✘

TEST 4 : 42 (type:double) is an integer ✔

TEST 5 : 42 (type:string) is an integer ✔

TEST 6 : a42 (type:string) is not an integer ✘

TEST 7 : 42a (type:string) is not an integer ✘

TEST 8 : 36 (type:integer) is an integer ✔

TEST 9 : 1337 (type:double) is an integer ✔

第三个选项(CTYPE_DIGIT方式):

# Check if your variable is an integer

if( ! ctype_digit(strval($variable)) ){

echo "Your variable is not an integer";

}

输出:

TEST 0 : 0 (type:integer) is an integer ✔

TEST 1 : 42 (type:integer) is an integer ✔

TEST 2 : 4.2 (type:double) is not an integer ✘

TEST 3 : 0.42 (type:double) is not an integer ✘

TEST 4 : 42 (type:double) is an integer ✔

TEST 5 : 42 (type:string) is an integer ✔

TEST 6 : a42 (type:string) is not an integer ✘

TEST 7 : 42a (type:string) is not an integer ✘

TEST 8 : 36 (type:integer) is an integer ✔

TEST 9 : 1337 (type:double) is an integer ✔

第四个选项(REGEX方式):

# Check if your variable is an integer

if( ! preg_match('/^\d+$/', $variable) ){

echo "Your variable is not an integer";

}

输出:

TEST 0 : 0 (type:integer) is an integer ✔

TEST 1 : 42 (type:integer) is an integer ✔

TEST 2 : 4.2 (type:double) is not an integer ✘

TEST 3 : 0.42 (type:double) is not an integer ✘

TEST 4 : 42 (type:double) is an integer ✔

TEST 5 : 42 (type:string) is an integer ✔

TEST 6 : a42 (type:string) is not an integer ✘

TEST 7 : 42a (type:string) is not an integer ✘

TEST 8 : 36 (type:integer) is an integer ✔

TEST 9 : 1337 (type:double) is an integer ✔

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值