我遇到了一个有趣的"if"条件:
$condition1="53==56";
$condition2="53==57";
$condition3="53==58";
$condition=$condition1."||".$condition2."||".$condition3;
if($condition)
{
echo "blah";
}
else
{
echo "foo";
}
Run Code Online (Sandbox Code Playgroud)
为什么if条件通过?为什么php回应"等等"?我该怎么做才能让php评估"if"语句并打印"foo"?
这里的问题是你把表达式放在字符串中!
你的$condition1,, $condition2和$condition3变量包含字符串,而不是表达式的结果,对于你的$condition变量也是如此,这个变量将是一个看起来像的字符串53==56||53==57||53==58.当PHP计算一个字符串时,true如果它不为空且不等于0,则认为它是,所以你的脚本将输出blah.
要解决此问题,您只需要将表达式从字符串中删除即可.它应该如下所示:
$condition1 = 53 == 56; // false
$condition2 = 53 == 57; // false
$condition3 = 53 == 58; // false
$condition = $condition1 || $condition2 || $condition3; // false || false || false = false
if ($condition) {
echo 'blah';
} else {
echo 'foo'; // This will be output
}
Run Code Online (Sandbox Code Playgroud)
那些不是条件,它们是字符串.
$condition1=53==56;
$condition2=53==57;
$condition3=53==58;
$condition=$condition1 || $condition2 || $condition3;
if($condition)
{
echo "blah";
}
else
{
echo "foo";
}
Run Code Online (Sandbox Code Playgroud)