$a = 101;
if (isset($a) && is_int($a) && in_array($a, range(1, 100))) {
echo "TRUE";
} else echo "FALSE";
为什么这个条件会返回FALSE,因为它应该是这个IF:
if (isset($argv[1]) && is_int($argv[1]) && in_array($argv[1], range(1, 100))) {
echo "TRUE";
} else echo "FALSE";
返回FALSE,其中作为第一个参数传递的值为50,其范围为??? PHP-CLI是7.0.9-TS-VC14-x64
提前致谢
答案 0 :(得分:1)
argv[1]
是一个字符串。
使用is_numeric()代替is_int(),并在检查范围内是否转换(或转换)为整数值。
// var_dump($argv); // ...if you want to check $argv types and values.
if (isset($argv[1]) && is_numeric($argv[1]) && in_array(intval($argv[1]), range(1, 100))) {
echo "TRUE";
}
else {
echo "FALSE";
}
注意 :is_numeric()在浮点值的情况下也会返回TRUE!