比较PHP中的多个值

Joh*_*ohn 13 php conditional-operator

我想离开这个:

if($var == 3 || $var == 4 || $var == 5 || $var =='string' || $var == '2010-05-16') {
   // execute code here
}
Run Code Online (Sandbox Code Playgroud)

对此:

if($var == (3, 4, 5, 'string', '2010-05-16')) { // execute code here }
Run Code Online (Sandbox Code Playgroud)

看起来非常冗余以便继续输入$var,我发现它使得阅读有点麻烦.PHP中有没有办法以这种方式简化它?我在这里阅读一篇文章,在使用XQuery时你可以使用=运算符$var = (1,2,3,4,5)等.

Gre*_*reg 34

将值放在数组中,然后使用函数in_array()检查它们是否存在.

$checkVars = array(3, 4, 5, "string", "2010-05-16");
if(in_array($var, $checkVars)){
    // Value is found.
}
Run Code Online (Sandbox Code Playgroud)

http://uk.php.net/manual/en/function.in-array.php

  • [从PHP 5.4开始,您还可以使用短数组语法,它将数组()替换为\ [\]](http://www.php.net/manual/en/language.types.array.php),所以只是`if(in_array($ var,[3,4,5,"string","2010-05-16"])){...}`就够了. (2认同)

Nik*_*kiC 8

如果您需要经常执行此检查并且需要良好的性能,请不要使用慢速数组搜索,而是使用快速哈希表查找:

$vals = array(
    1 => 1,
    2 => 1,
    'Hi' => 1,
);

if (isset($vals[$val])) {
    // go!
}
Run Code Online (Sandbox Code Playgroud)

  • 嗯...超过6年后,没有结论?人们开始怀疑代码必须非常慢.:-) (3认同)

Pek*_*ica 5

您可以使用in_array()

if (in_array($var, array(3,4,5,"string","2010-05-16"))) { .... }
Run Code Online (Sandbox Code Playgroud)


tda*_*ers 5

if (in_array($var, array(3, 4, 5, 'string', '2010-05-16'))) {execute code here }
Run Code Online (Sandbox Code Playgroud)

或者,或者,一个开关块:

switch ($var) {
    case 3:
    case 4:
    case 5:
    case 'string':
    case '2010-05-16':
        execute code here;
        break;
}
Run Code Online (Sandbox Code Playgroud)