这种情况有合理的方法吗?

时间:2014-07-23 15:44:48

标签: php logic

我很好奇,有没有办法用逻辑压缩这个条件:

if($var1 == 'foo' || $var2 == 'foo' OR $var3 == 'foo')

更紧凑的东西:

if(($var1 ||$var2 || $var3) == 'foo')

我认为php不允许这样做,但我知道是否有一个"逻辑技巧"做一些或多或少的事情(即使条件最终比原始条件更长)?

3 个答案:

答案 0 :(得分:3)

in_array()可以缩短一点:

if (in_array('foo', array($var1, $var2, $var3))) {

}

答案 1 :(得分:1)

你可以:

if (($var1 == $var2) && ($var2 == $var3)) {
    // hurrah they're the same
}

答案 2 :(得分:1)

在测试了几种可能性后,我认为in_array()是您的最佳选择。 John's answer是其中之一,并给出了原始/第一个答案;这只是一个补充。

你可以这样做,并预先设置一个数组,如果这是你想要做的,对任何其他添加的变量。

$var1 =  "foo"; // yep
$var2 =  "foo2"; // nope
$var3 =  "foo3"; // nope
$var4 =  "foo"; // yep

$vars = array("$var1","$var2","$var3","$var4");
if (in_array("foo", $vars)) //Founds a match !
{
    echo "Yep";
}

else
{
    echo "Nope";
}