我试图建立声誉系统:
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还没有投票
我收到了相互矛盾的结果。
我也尝试在不同的地方使用不同类型的=== !===
,但我得到了倒置的结果,或者我的成功函数失败了
有什么东西我不了解布尔运算符吗? 任何帮助都会非常苛刻
答案 0 :(得分:2)
如果您正在执行echo
,并在输出中获得False
,则听起来您的变量持有字符串"False"
,而不是布尔值{{1} }。非空字符串是" fact-y"价值,意味着当你false
时,它会恢复正常。
最快的修复似乎是在你的代码的其余部分之前添加它:
if ($some_string)