Сокращение php для оператора или его повторение [дубликат]

Я обычно использую атрибуты data- * в html.

В этом примере используется jQuery, но может быть адаптирован для другой библиотеки или ванильного Javascript.

Вы можете узнать больше о свойство набора данных здесь: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.dataset

18
задан vertigoelectric 2 May 2013 в 20:05
поделиться

5 ответов

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

if (in_array($variable, array('one','two','three'))) {
32
ответ дан John Conde 21 August 2018 в 16:58
поделиться
  • 1
    всегда слишком быстро для меня Джон Конде: P – brbcoding 2 May 2013 в 20:08
  • 2
    Я понял это после того, как отправил свой вопрос. Угадай, я прыгнул с пистолета. Это довольно блестящее решение и особенно полезно при сравнении с несколькими вещами одновременно. Спасибо. Я приму его, как только сайт позволит мне. Он говорит, что я должен ждать. – vertigoelectric 2 May 2013 в 20:09
  • 3
    @brbcoding, я по-прежнему ценю ваши усилия. – vertigoelectric 2 May 2013 в 20:10
  • 4
    Upvoted. 1 закрывающая скобка отсутствует, хотя – basic_space 7 December 2015 в 07:53
  • 5
    короче: if (in_array($variable, ['one','two','three'])) { – Code4R7 20 March 2018 в 15:41
$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";        
}
0
ответ дан brbcoding 21 August 2018 в 16:58
поделиться

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

switch($variable){
 case 'one': case 'two': case 'three':
   //do something amazing here
 break;
 default:
   //throw new Exception("You are not worth it");
 break;
}
0
ответ дан Cedric 21 August 2018 в 16:58
поделиться

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

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

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

if (stristr('one/two/three', $variable))//or comma's or somehting else
4
ответ дан Elias Van Ootegem 21 August 2018 в 16:58
поделиться
  • 1
    Я думаю, у вас есть опечатка и означает «twothr». вместо «thothr», но, очевидно, я знаю, что вы имели в виду. Во всяком случае, это еще одна приятная тактика, а на самом деле еще короче. Я заметил, что вы использовали strstr первый раз, а stristr - второй раз. В чем разница? – vertigoelectric 2 May 2013 в 20:42
  • 2
    strstr ищет точное совпадение exact (CaseSensitive) stristr с i выполняет сравнение с учетом регистра. это единственное различие. И да, этот мусор был опечаткой: P – Elias Van Ootegem 2 May 2013 в 20:45
  • 3
    Ах хорошо. Это то, что я считал разницей. Также 'thwothr' по-прежнему является типовой XD – vertigoelectric 2 May 2013 в 22:39
  • 4
    @vertigoelectric: aw зажимает ... Я просто не могу сейчас это собрать;) – Elias Van Ootegem 2 May 2013 в 22:40
  • 5
    К сожалению, этого недостаточно: это все равно одобрит значение, такое как «ree». или "wo". Вам нужно будет использовать "/{$variable}/" вместо $variable. Хотя, вероятно, медленнее, решение in_array начинает казаться более чистым. – LSerni 2 April 2016 в 23:03

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

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

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

0
ответ дан kenorb 21 August 2018 в 16:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: