Int或非Int。如何修复代码?

时间:2012-10-04 16:46:29

标签: php string int

我希望下面的代码第一次返回'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";
}
?>

4 个答案:

答案 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;