我在文本文档中有一个简单的数字,我通过$text_data = fread($file_handle, 2)
得到它(前两个字节,其中num应该是 - 小于10)。
有一次,我检查文件是否是" OK"通过尝试确定读取值是0 = N间隔之外的整数还是整数:
if (!is_int($text_data) OR $text_data < 0 OR $text_data > MAXIMUM_TRIES)
但它不起作用!
此IF
会返回TRUE
TXT文件中的任何值,并且我不知道下一步该做什么。
有什么想法吗?
答案 0 :(得分:1)
This IF returns TRUE whatever the value from TXT file
仅因为您的$text_data
变量始终是字符串值。然后!is_int($text_data)
不能是假的。
您需要更改此行:
if (!is_int($text_data) OR $text_data < 0 OR $text_data > MAXIMUM_TRIES)
到
$number = (int)$text_data; //if $text_data is not a number, $text will be 0
if ( $number !== 0 && ($number < 0 || $number > MAXIMUM_TRIES))
答案 1 :(得分:0)
包含可以解析为整数的数字的字符串不是整数,但仍然是字符串。例如,您需要使用intval()
将其强制转换为整数。
您可以尝试使用is_numeric()
代替is_int()
var_dump(is_int(10)); // true
var_dump(is_int("10")); // false
var_dump(is_numeric("10")); // true
var_dump(is_int(intval("10"))); // true
所以我要说的是,就在你做if()
之前,先做这个:
$text_data = intval($text_data);