如果条件错误地工作

时间:2017-07-04 12:12:26

标签: php if-statement

以下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]=990myArray[1]=1000因此myArray[0]不应大于myArray[1],并且else语句应该运行,但相反的情况正在发生。

有关为什么不起作用的任何建议?
非常感谢您的回答。

4 个答案:

答案 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]){