【问题标题】:Boolian check giving incorrect answer布尔检查给出不正确的答案
【发布时间】:2015-06-26 20:05:44
【问题描述】:

我正在尝试建立信誉系统:

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);
}

然后我控制台记录结果,我会得到这个:

假你还没有投票

我得到了相互矛盾的结果。 我还尝试在不同的地方使用不同类型的=== !===,结果要么反转,要么我的成功函数失败

关于布尔运算符有什么我不知道的吗? 任何帮助将不胜感激

【问题讨论】:

    标签: php if-statement boolean


    【解决方案1】:

    如果您正在执行echo,并在输出中获得False,那么听起来您的变量包含字符串"False",而不是布尔值false。非空字符串是“true-y”值,这意味着当您执行 if ($some_string) 时,它会返回 true。

    最快的解决方法似乎是在其余代码之前添加它:

    if (strtolower($upvotetruedownvotefalse) === 'false') {
        $upvotetruedownvotefalse = false;
    }
    //the rest of your code here
    

    【讨论】:

    • 对不起,我手动输入了那部分。我收到的是假而不是假
    • 不管怎样,如果你回显一个布尔值,如果为真,它会输出“1”,如果为假,则什么都不输出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 2019-03-07
    • 2021-12-30
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多