Php 还需要ctype_digit为负数返回true

Php 还需要ctype_digit为负数返回true,php,Php,如果字符串中只有正数或负数,我需要获取一个字符串并返回true。有办法做到这一点吗 $rating = "-25"; if (!ctype_digit($rating)) { echo "Not a digit."; } else { echo "Is a digit."; } 结果: 一个数字也没有 需要结果: 是一个数字。ctype\u digit()用于仅由数字组成的值。 其中,$rating=-25为false,因为在这种特殊情况下它被视为ASCII码(如下所述),而“-25”无效

如果字符串中只有正数或负数,我需要获取一个字符串并返回true。有办法做到这一点吗

$rating = "-25";
if (!ctype_digit($rating)) {
echo "Not a digit.";
} 
else {
echo "Is a digit.";
} 
结果:

一个数字也没有

需要结果:

是一个数字。

ctype\u digit()
用于仅由数字组成的值。 其中,
$rating=-25
为false,因为在这种特殊情况下它被视为ASCII码(如下所述),而
“-25”
无效,因为
-
不是数字。 你可以输入juggle,但我想你在找

echo是数字(“-25”)
回显ctype_位((整数)$var)

但是,如果字符串不能转换为整数,则后者将返回true。如果是这样的话,它的值将为0

重要提示: 如果将
-128
255
范围内的文字整数传递给
ctype\u digit()
,则该值将转换为ASCII表中定义的字符。如果不是数字,则应为false。任何其他整数值都是正常的预期行为。

ctype\u digit()
适用于仅由数字组成的值。 其中,
$rating=-25
为false,因为在这种特殊情况下它被视为ASCII码(如下所述),而
“-25”
无效,因为
-
不是数字。 你可以输入juggle,但我想你在找

echo是数字(“-25”)
回显ctype_位((整数)$var)

但是,如果字符串不能转换为整数,则后者将返回true。如果是这样的话,它的值将为0

重要提示: 如果将
-128
255
范围内的文字整数传递给
ctype\u digit()
,则该值将转换为ASCII表中定义的字符。如果不是数字,则应为false。任何其他整数值都是正常的预期行为。

是这个问题的正确答案,根据文档,从5.2开始就存在了

如果字符串不是有效的整数,filter_var将返回过滤后的数据或
false

var_dump(filter_var("1", FILTER_VALIDATE_INT) !== false);
var_dump(filter_var("0", FILTER_VALIDATE_INT) !== false);
var_dump(filter_var("-1", FILTER_VALIDATE_INT) !== false);
结果:

test.php:1:boolean true
test.php:2:boolean true
test.php:3:boolean true
请注意,您必须使用
false
而不是逻辑
执行比较
否则与
0

进行比较时会失败。根据文档,p>是这个问题的正确答案,并且从5.2开始就存在

如果字符串不是有效的整数,filter_var将返回过滤后的数据或
false

var_dump(filter_var("1", FILTER_VALIDATE_INT) !== false);
var_dump(filter_var("0", FILTER_VALIDATE_INT) !== false);
var_dump(filter_var("-1", FILTER_VALIDATE_INT) !== false);
结果:

test.php:1:boolean true
test.php:2:boolean true
test.php:3:boolean true

请注意,您必须使用
false
而不是逻辑
执行比较
否则与
0

比较时会失败“仅适用于实整数”这是错误的。ctype_digit适用于字符串中的数字。@modu你是对的,我做了更具体的编辑。“仅适用于实整数”这是错误的。ctype_digit适用于字符串中的数字。@modu你说得对,我已经编辑得更具体了。