根据条件将一个变量设置为true

时间:2012-08-16 16:07:19

标签: php

如何根据其他条件将一个变量设置为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";}

?>

6 个答案:

答案 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;}

这样,varbvarc仅在前一次测试后$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,请使用===。 (这通常是一个很好的规则,除非你知道你明确想要测试值而不是输入。)