布尔检查给出错误答案
Boolian check giving incorrect answer
我正在尝试建立一个声誉系统:
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 haven't upvoted yet
我得到了相互矛盾的结果。
我也试过在不同的地方使用不同类型的 === !===
,但我得到的结果要么是相反的,要么我的成功函数失败了
关于布尔运算符,我有什么不了解的吗?
任何帮助将不胜感激
如果您正在执行 echo
,并在输出中得到 False
,那么听起来您的变量保存的是字符串 "False"
,而不是布尔值 false
。非空字符串是一个 "truth-y" 值,这意味着当您执行 if ($some_string)
时它会返回 true。
最快的解决方法似乎是在您的其余代码之前添加此内容:
if (strtolower($upvotetruedownvotefalse) === 'false') {
$upvotetruedownvotefalse = false;
}
//the rest of your code here
我正在尝试建立一个声誉系统:
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 haven't upvoted yet
我得到了相互矛盾的结果。
我也试过在不同的地方使用不同类型的 === !===
,但我得到的结果要么是相反的,要么我的成功函数失败了
关于布尔运算符,我有什么不了解的吗? 任何帮助将不胜感激
如果您正在执行 echo
,并在输出中得到 False
,那么听起来您的变量保存的是字符串 "False"
,而不是布尔值 false
。非空字符串是一个 "truth-y" 值,这意味着当您执行 if ($some_string)
时它会返回 true。
最快的解决方法似乎是在您的其余代码之前添加此内容:
if (strtolower($upvotetruedownvotefalse) === 'false') {
$upvotetruedownvotefalse = false;
}
//the rest of your code here