我有一个if
声明,其中有几个or
。这是做这个简单的IF或OR语句的方法吗?
即
if($count == 1 || $count == 3 || $count == 7) {
// do stuff
}
我只是好奇 - 这是做到这一点的最好方法是什么?通过上面这个简单的例子,有没有更快的方法来做到这一点,如果是这样,它是什么?
我有一个if
声明,其中有几个or
。这是做这个简单的IF或OR语句的方法吗?
即
if($count == 1 || $count == 3 || $count == 7) {
// do stuff
}
我只是好奇 - 这是做到这一点的最好方法是什么?通过上面这个简单的例子,有没有更快的方法来做到这一点,如果是这样,它是什么?
您的代码正常工作。或者,你可以使用in_array(),这是一个有点更干净,更好地伸缩:
if (in_array($count, array(1,3,7))) { ... }
实际上,这比原来的例子慢了大约4倍......授予它需要(在我的服务器上)116ms vs 449ms运行一百万次......尽管如此,它更清晰易读。使用少量数据 - 速度可以忽略不计。大事情 - in_array表现非常缓慢。 – Sergey 2011-03-02 05:06:04
@Sergey好了,这种情况似乎从来没有遇到过大阵列,不是吗? – 2011-03-02 06:08:42
如果你在那里粘贴了一百万件物品,那么你做错了。 – 2011-03-02 16:35:44
您可以指定数组中的所有可能的值,并检查使用array_search功能
$array=array(1,3,7);
if (array_search($count,$array) !== FALSE)
{
//do stuff
}
你写的代码很好。正如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
}
即使你只在这一个地方使用的功能,这可能增加代码的可读性。很明显,你必须使用你的判断,因为你增加了可读性,代价是需要更多的代码来维护,而这并不总是正确的选择。如果条件与对方没什么关系,将它们绑定到单独的函数中可能没有意义,并且使代码更难以遵循,而不是更容易。关注你的代码的实际含义,以及人类应该如何理解它。
+深思熟虑 – codercake 2011-03-02 05:17:49
谢谢你。我不知道有一个is_odd函数。 – willdanceforfun 2011-03-05 01:18:28
如果要求更快的方法,您是否有与此代码相关的任何性能问题? – 2011-03-02 06:09:52
没有性能问题,更多只是想知道是否有捷径实现相同。当那里有10个或者语句时,它可能会有点冗长和重复。 – willdanceforfun 2011-03-05 01:16:44