以下PHP if条件语句处理错误且无法正常工作 文件$ fname具有文本值:" 990,1000"两者之间用逗号表示:
$myfile = fopen($fname, "r") or die("<script
type='text/javascript'>window.location.href =
'http://www.autorekrooter.com/activation.html';</script>");
$dt=fread($myfile,filesize($fname));
//File fname has values: "990, 1000"
fclose($myfile);
$myArray = explode(',', $dt);
//Now checking if Limit expired or not?
echo "<br>myArray[0] values is: " . $myArray[0] . " myArray[1] value is: " .
$myArray[1];
if ($myArray[0]>=$myArray[1]){
echo "<script>alert('You can't proceed further');</script>";
//echo "<script type='text/javascript'>window.location.href = 'register.html';</script>";
exit();
}
else{
echo "<script type='text/javascript'>window.location.href =
'gui.php';</script>";
echo "You can proceed";
exit();
}
当我在php文件中运行上述内容时,if语句始终将myArray[0] >= myArray[1]
的值设为true并显示 reigster.html ,而在$fname
文件中则显示990,1000 myArray[0]=990
和myArray[1]=1000
因此myArray[0]
不应大于myArray[1]
,并且else语句应该运行,但相反的情况正在发生。
有关为什么不起作用的任何建议?
非常感谢您的回答。
答案 0 :(得分:2)
您的文件末尾可能有换行符(\n
或\r\n
)($myfile
)。所以myArray[1]
实际上看起来像"1000\n"
。
var_dump("990" >= "1000\n");
返回bool(true)
。
您正在比较PHP无法转换为数字的字符串,因此您会得到意外的结果。
答案 1 :(得分:1)
试试这个
$myArray = array_map('intval', explode(',', $dt));
答案 2 :(得分:1)
您可以使用 intval 来获取整数值 试试这个
if (intval($myArray[0])>=intval($myArray[1])){
echo "<script>alert('You can't proceed further');</script>";
//echo "<script type='text/javascript'>window.location.href = 'register.html';</script>";
exit();
}
else{
echo "<script type='text/javascript'>window.location.href =
'gui.php';</script>";
echo "You can proceed";
exit();
}
我觉得它对你有用。
答案 3 :(得分:0)
尝试:
f ((int)$myArray[0]>=(int)$myArray[1]){