Ответ 1
in_array()
- это то, что я использую
if (in_array($variable, array('one','two','three'))) {
В принципе, мне интересно, есть ли способ сократить что-то вроде этого:
if ($variable == "one" || $variable == "two" || $variable == "three")
таким образом, что переменная может быть протестирована против или сравнена с несколькими значениями без повторения переменной и оператора каждый раз.
Например, что-то вроде этого может помочь:
if ($variable == "one" or "two" or "three")
или что-нибудь, что приводит к меньшему набору текста.
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 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
шаблонный модификатор ( i нечувствителен) может соответствовать как строчным, так и строчным буквам.