这是做这个简单的IF OR OR语句的方法吗?

时间:2011-03-02 04:44:51

标签: php

我的if语句中包含一些or

if($count == 1  ||  $count == 3  || $count == 7) {  
    // do stuff
}

我只是好奇 - 这是最好的方法吗?通过上面这个简单的例子,有没有更快的方法来做到这一点,如果是这样,它是什么?

4 个答案:

答案 0 :(得分:3)

您的代码运行正常。或者,您可以使用in_array(),它更清洁一点并且可以更好地扩展:

if (in_array($count, array(1,3,7))) { ... }

答案 1 :(得分:3)

你写的代码很好。正如Paul Schreiber所说,还有其他各种选择更加简洁。

您可能想要考虑的一件事(我知道这仅仅是一个例子)是您检查的值很重要的原因。他们都有一些你正在检查的共同财产吗?如果是这样,那么以符号方式声明属性可能会使代码更易于理解。例如:

if (is_odd($x) && $x < 10) {
    //...
}

而不是

if ($x == 1 || $x == 3 || $x == 5 || $x == 7 || $x == 9 ) {
    //...
}

这是一个非常人为的例子,但希望你能看到我的目标。

作为一个更具体的例子,而不是做类似的事情:

if ($user->age > 65 
    || $user->years_of_custom > 3
    || $num_items > 5 ) {
       // Give this user a discount ....
}

您可能想要这样做:

if (eligible_for_discount($user, $num_items) ) {
    // Give this user a discount
}

即使您只在这一个地方使用该功能,也可以提高代码的可读性。显然你必须使用你的判断,因为你增加了可读性,代价是要维护更多的代码行,而这并不总是正确的选择。如果条件彼此之间几乎没有关系,那么将它们绑定到一个单独的函数可能没有任何意义,并且使代码更难以遵循,而不是更容易。关注你的代码实际意味着什么,以及人类应该如何理解它。

答案 2 :(得分:1)

您可以在数组中分配所有可能的值,并使用array_search函数

进行检查
$array=array(1,3,7);

if (array_search($count,$array) !== FALSE)
{
  //do stuff
}

答案 3 :(得分:0)

switch陈述不会更好吗?

switch ($count) {
  case 1:
  case 3:
  case 7:
    echo "do stuff";
    break;
}