Я обычно использую атрибуты data- * в html.
В этом примере используется jQuery, но может быть адаптирован для другой библиотеки или ванильного Javascript.
Вы можете узнать больше о свойство набора данных здесь: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.dataset
in_array()
- это то, что я использую
if (in_array($variable, array('one','two','three'))) {
$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;
}
Без необходимости построения массива:
if (strstr('onetwothree', $variable))
//or case-insensitive => stristr
Конечно, технически это вернет true, если переменной является twothr
, поэтому может быть удобно добавить «разделители»:
if (stristr('one/two/three', $variable))//or comma's or somehting else
strstr
первый раз, а stristr
- второй раз. В чем разница?
– vertigoelectric
2 May 2013 в 20:42
strstr
ищет точное совпадение exact i> (CaseSensitive) stristr
с i
выполняет сравнение с учетом регистра. это единственное различие. И да, этот мусор был опечаткой: P
– Elias Van Ootegem
2 May 2013 в 20:45
"/{$variable}/"
вместо $variable
. Хотя, вероятно, медленнее, решение in_array
начинает казаться более чистым.
– LSerni
2 April 2016 в 23:03
Использование preg_grep
может быть более коротким и более гибким, чем использование in_array
:
if (preg_grep("/(one|two|three)/i", array($variable))) {
// ...
}
Поскольку дополнительный модификатор i
шаблона (нечувствительный) может соответствовать как буквы верхнего и нижнего регистра.
if (in_array($variable, ['one','two','three'])) {
– Code4R7 20 March 2018 в 15:41