1

我希望下面的代码第一次返回“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

4 回答 4

6

通过将数字括在引号中'1',您声明了一个字符串。相反,您必须使用$test1 = 1;.

通过使用 PHPctype_digit()函数,您可以检查字符串是否仅包含数字。
您还可以使用该is_numeric()函数,如果字符串包含指数部分+0123.45e6或十六进制值,该函数也会返回 true 0xFF

于 2012-10-04T16:48:15.570 回答
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';
}
?>
于 2012-10-04T16:49:48.637 回答
1

改为使用ctype_digit()

ctype_digit('1'); // True
ctype_digit('1a'); // False
于 2012-10-04T16:48:26.097 回答
0

改变

 $test1='1'; 

 $test1=1;
于 2012-10-04T16:49:43.653 回答