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) === false ) {

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 ✔

第二种选择(比较方式):

# 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 ✔

2020-05-26

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值