В PHP есть ли короткий способ сравнить переменную с несколькими значениями?
в основном, что мне интересно, есть ли способ сократить что-то вроде этого:
if ($variable == "one" || $variable == "two" || $variable == "three")
таким образом, что переменную можно протестировать или сравнить с несколькими значениями, не повторяя переменную и оператор каждый раз.
например, что-то вроде этого может помочь:
if ($variable == "one" or "two" or "three")
или что-нибудь, что приводит к меньшему набору текста.
5 ответов
in_array()
это то, что я использую
if (in_array($variable, array('one','two','three'))) {
без необходимости построения массива:
if (strstr('onetwothree', $variable))
//or case-insensitive => stristr
конечно, технически это вернет true, если переменная twothr
, поэтому добавление "разделителей" может быть удобно:
if (stristr('one/two/three', $variable))//or comma's or somehting else
$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";
}
корпус переключателя
switch($variable){
case 'one': case 'two': case 'three':
//do something amazing here
break;
default:
//throw new Exception("You are not worth it");
break;
}
используя preg_grep
может быть короче и более гибким, чем при использовании in_array
:
if (preg_grep("/(one|two|three)/i", array($variable))) {
// ...
}
потому что необязательный элемент i
модификатор шаблона (Яnsensitive) может соответствовать как верхним, так и нижним буквам.