我希望下面的代码第一次返回'Int',第二次返回'Not int'。不幸的是,它会两次返回'Not int'。
我该如何解决这个问题?
<?php
$test1='1';
if(is_int($test1)){
echo "Int";
}else{
echo "Not int";
}
echo "\n";
$test2='1a';
if(is_int($test2)){
echo "Int";
}else{
echo "Not int";
}
?>
答案 0 :(得分:6)
通过将数字包装在引号'1'
中,您将声明一个字符串。
相反,你必须使用$test1 = 1;
。
通过使用PHP ctype_digit()
函数,您可以检查字符串是否只包含数字
您还可以使用is_numeric()
函数,如果字符串包含指数部分(如+0123.45e6
或十六进制值0xFF
),该函数也会返回true。
答案 1 :(得分:2)
is_int - 查找变量的类型是否为整数 因为您将数字放在引号中,所以它是一个字符串。因此is_int = false
is_numeric - 查找变量是数字还是数字字符串 因为字符串实际上是一个数字,所以is_numeric将返回true
因此,将is_int更改为is_numeric并且它可以工作:
<?php
$test1 = '1';
if (is_numeric($test1))
{
echo 'Int';
}
else
{
echo 'Not int';
}
echo "\n";
$test2 = '1a';
if (is_numeric($test2))
{
echo 'Int';
}
else
{
echo 'Not int';
}
?>
答案 2 :(得分:1)
改为使用ctype_digit()
。
ctype_digit('1'); // True
ctype_digit('1a'); // False
答案 3 :(得分:0)
变化
$test1='1';
到
$test1=1;