我的if
语句中包含一些or
。
即
if($count == 1 || $count == 3 || $count == 7) {
// do stuff
}
我只是好奇 - 这是最好的方法吗?通过上面这个简单的例子,有没有更快的方法来做到这一点,如果是这样,它是什么?
答案 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;
}