В PHP есть ли короткий способ сравнить переменную с несколькими значениями? - программирование
Подтвердить что ты не робот

В PHP есть ли короткий способ сравнить переменную с несколькими значениями?

В принципе, мне интересно, есть ли способ сократить что-то вроде этого:

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

таким образом, что переменная может быть протестирована против или сравнена с несколькими значениями без повторения переменной и оператора каждый раз.

Например, что-то вроде этого может помочь:

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

или что-нибудь, что приводит к меньшему набору текста.

4b9b3361

Ответ 1

in_array() - это то, что я использую

if (in_array($variable, array('one','two','three'))) {

Ответ 2

Без необходимости построения массива:

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

Конечно, технически это вернет true, если переменная twothr, поэтому добавление "разделителей" может быть удобно:

if (stristr('one/two/three', $variable))//or comma or somehting else

Ответ 3

$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";        
}

Ответ 4

С корпусом выключателя

switch($variable){
 case 'one': case 'two': case 'three':
   //do something amazing here
 break;
 default:
   //throw new Exception("You are not worth it");
 break;
}

Ответ 5

Использование preg_grep может быть короче и более гибким, чем использование in_array:

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

Поскольку необязательный i шаблонный модификатор ( i нечувствителен) может соответствовать как строчным, так и строчным буквам.