2

Currently I'm using the following approach to determine if $userlevel is either 10, 20, or 30.

if ( in_array( $userlevel, array( 10, 20, 30 ) ) ) { 

} 

Is there a better way to do this?

4

3 回答 3

4

您已经在使用“更好的方法”。替代方案是

if ($userlevel == 10 || $userlevel == 20 || $userlevel == 30) {

}

通常,您会编写一个基本if语句,直到可能值的数量增加以至于该行变得太长,然后您将它们移动到一个集合中并使用in_array.

如果您知道这$userlevel始终是这些值之一,您可以简单地测试它是否在上限/下限之间,但这不会比您现在编写的方式短。

于 2012-11-17T03:09:38.237 回答
3

我认为没有“更好”的方法。这取决于您期望从中选择的价值观在未来发展。您可以使用没有中断的开关。

switch ($userlevel) {
    case 10: case 20: case 30
        // ..
        break;
    default:
        // ..
}

编辑

当然,该in_array解决方案有很大的好处。您可以将决策数组存储在一个变量中,并能够从其他地方影响它。

于 2012-11-17T03:17:09.200 回答
0

没有比 in_array 更好的方法了。

于 2012-11-17T05:48:16.620 回答