Boolian检查给出错误的答案

时间:2015-06-26 20:05:45

标签: php if-statement boolean

我试图建立声誉系统:

if($upvotetruedownvotefalse == false){
    if(strpos($lines[2],$username.",") !== false){
        echo "you've already downvoted";
    }
    else{
        echo "you haven't downvoted yet";
        $lines[2] = $username.",".$lines[2];
        $lines[0] = $lines[0]-1 . "\n";
        file_put_contents( $filename , $lines);

    }
}
if($upvotetruedownvotefalse == true){
    if(strpos($lines[1],$username.",") !== false){
        echo "you've already upvoted";
    }else{
        echo "you haven't upvoted yet";
        $lines[1] = $username.",".$lines[1];
        $lines[0] = $lines[0]+1 . "\n";
        file_put_contents( $filename , $lines);
    }

}

$upvotetruedownvotefalse的值是通过AJAX确定的

然而,这些比较运算符给我错误的结果。

例如,如果$upvotetruedownvotefalse = false,则会触发$upvotetruedownvotefalse == true。 我通过回显$upvotetruedownvotefalse的值并使用成功函数接收回声结果(包括if语句中的结果)来测试这个:

echo $upvotetruedownvotefalse;
success: function(response){
          alert(response);
}

然后我console.log结果,我会得到这个:

  

Falseyou还没有投票

我收到了相互矛盾的结果。 我也尝试在不同的地方使用不同类型的=== !===,但我得到了倒置的结果,或者我的成功函数失败了

有什么东西我不了解布尔运算符吗? 任何帮助都会非常苛刻

1 个答案:

答案 0 :(得分:2)

如果您正在执行echo,并在输出中获得False,则听起来您的变量持有字符串"False",而不是布尔值{{1} }。非空字符串是" fact-y"价值,意味着当你false时,它会恢复正常。

最快的修复似乎是在你的代码的其余部分之前添加它:

if ($some_string)