23

基本上我想知道是否有办法缩短这样的内容:

if ($variable == "one" || $variable == "two" || $variable == "three")

以这样一种方式,可以对变量进行测试或与多个值进行比较,而无需每次都重复变量和运算符。

例如,类似这样的东西可能会有所帮助:

if ($variable == "one" or "two" or "three")

或任何导致更少打字的东西。

4

5 回答 5

43

in_array()是我用的

if (in_array($variable, array('one','two','three'))) {
于 2013-05-02T19:06:20.300 回答
4

无需构造数组:

if (strstr('onetwothree', $variable))
//or case-insensitive => stristr

当然,从技术上讲,如果变量是,这将返回 true twothr,因此添加“分隔符”可能会很方便:

if (stristr('one/two/three', $variable))//or comma's or somehting else
于 2013-05-02T19:28:03.520 回答
0

With switch case

switch($variable){
 case 'one': case 'two': case 'three':
   //do something amazing here
 break;
 default:
   //throw new Exception("You are not worth it");
 break;
}
于 2014-10-23T13:59:27.693 回答
0
$variable = 'one';
// ofc you could put the whole list in the in_array() 
$list = ['one','two','three'];
if(in_array($variable,$list)){      
    echo "yep";     
} else {   
    echo "nope";        
}
于 2013-05-02T19:08:16.837 回答
0

usingpreg_grep可能比 using 更短、更灵活in_array

if (preg_grep("/(one|two|three)/i", array($variable))) {
  // ...
}

因为可选的i 模式修饰符insensitive)可以匹配大小写字母。

于 2016-09-02T11:40:27.260 回答