如何根据其他条件将一个变量设置为true。在这里,而不是做
if ($vara && $varb && $varc)
我就像下面这样。问题是,我只是没有做对。你能帮我吗?
<?php
$onward = false;
$vara = 11;
$varb = 21;
$varc = 3;
if ($vara == 1)
{$onward = true;}else{$onward = false;}
if ($varb == 2)
{$onward = true;}else{$onward = false;}
if ($varc == 3)
{$onward = true;}else{$onward = false;}
if ($onward)
{
echo "Ok";
}else {echo "Not ok";}
?>
答案 0 :(得分:4)
您的每个条件都会忽略先前条件的结果。您需要在每个后续测试中包含先前的$onward
状态:
if ($vara == 1)
{$onward = true;}else{$onward = false;}
if ($varb == 2 && $onward)
{$onward = true;}else{$onward = false;}
if ($varc == 3 && $onward)
{$onward = true;}else{$onward = false;}
这样,varb
和varc
仅在前一次测试后$onward
仍然为真时进行测试。
这是编写代码的一种特别难看的方式。如果您有三个大条件并且您不想像在$vara && $varb && $varc
那样只在一行上加入它们,那么您应该这样写:
$onward = ($vara == 1)
$onward = $onward && ($varb == 2);
$onward = $onward && ($varb == 3);
如果您的if语句只是在分支中返回/设置某些内容为true / false,那么您应该只返回/设置条件本身。
就是这样:
if (condition) {
return true;
} else {
return false;
}
应始终写下:
return condition;
答案 1 :(得分:4)
问题是,您在每个$onward
语句中覆盖if
的值。只需使用
$onward = $vara == 1 && $varb == 2 && $varc == 3;
答案 2 :(得分:3)
我认为你在寻找:
$onward = $vara == 1 || $varb == 2 || $varc ==3;
或
$onward = $vara == 1 && $varb == 2 && $varc == 3;
取决于你的目标。
有了这个:
if ($varc == 3)
{$onward = true;}else{$onward = false;}
如果$onward
不是3,则 false
始终为$varc
。
答案 3 :(得分:2)
我确定你的意思
if (($vara == 1) && ($varb == 2) && ($varc == 3))
{$onward = true;}else{$onward = false;}
甚至
$onward = (($vara == 1) && ($varb == 2) && ($varc == 3));
答案 4 :(得分:1)
更好的方法:
if ($vara == 1) {$onward = true;} else {$onward = false;}
就是这样:
$onward = ($vara == 1);
答案 5 :(得分:0)
你每次都要覆盖同一个变量,所以前两个条件实际上是毫无意义的。
我不知道为什么你想要通过第一个更简洁的方法做到这一点,这将具有相同的逻辑效果:
if ($varc ==== 1 || $varc === 2 || $varc === 3)
$onward = true;
else
$onward = false;
甚至只是:
$onward = $varc === 1 || $varc === 2 || $varc === 3;
还要注意做== 1
。在比较中,数据被强制转换为它们的真实等价物,因此在比较== 1
中任何真实值都将被解析为真。要测试某些内容是1,请使用===
。 (这通常是一个很好的规则,除非你知道你明确想要测试值而不是输入。)