0

目前,我正在做这样的事情:

if ( in_array ( $variable, ["a","b","c"] ) ) { ... }

读起来容易一点

if ( $variable == "a" || $variable == "b" || $variable == "c" ) { ... }

但我想知道,有没有更有效的方法,而不是检查数组中的值?

4

2 回答 2

2

像这样试试

$my_array = array_flip(array('a', 'b', 'c', 'd', ...));
if (isset($my_array[$variable])) ...

创建 $my_array 需要一次性 O(n) 成本,然后检查匹配项是 O(1)。

于 2013-02-19T13:13:46.707 回答
0

您可以使用switch case语句针对多个值检查变量。

请参考下面提到的代码片段

例如

  switch($a)
  {
      case 'a':
    //do something
      break;
     case 'b':
     //do something
     break; 
    case 'c':
    //do something
    break;
  }
于 2013-02-19T13:30:07.177 回答