Короткую руку сделать что-то вроде: if ($ variable == 1 || $ variable == "whatever" || $ variable == '492').

Я нахожу, что я сам делаю это предложение IF . Например:

 if($variable == 1 || $variable == "whatever" || $variable == '492') { ... } 

За исключением выделенного времени, я сравниваю переменную $, возможно, 4-5 вещей, а иногда и больше. Есть ли короткий способ написать это? Вы можете видеть, что повторяющаяся $variable == будет избыточной.

Я хотел бы, чтобы это работало, но это не так:

 if($variable == (1 || "whatever" || 492) { ... } 

Solutions Collecting From Web of "Короткую руку сделать что-то вроде: if ($ variable == 1 || $ variable == "whatever" || $ variable == '492')."

Вы можете использовать эту стенографию, но имейте в виду, что она менее эффективна, поскольку явным образом перечисляет их все или предложения:

 if(in_array($variable, array(1, 'whatever', '492'))){ ... } 

Также, если вы хотите использовать === вместо == эквивалент:

 if(in_array($variable, array(1, 'whatever', '492'), TRUE)){ ... } 

if(in_array($variable, array(1, "whatever", 492)))

Хотя это прямо не отвечает на вопрос, я думаю, что стоит добавить этот метод как часть решения вышеупомянутой проблемы:

Если вы обнаружите, что что-то имеет несколько значений, вы можете найти что-то вроде следующего:

 if (true === is_condition_one ( $variable )) { // Execute any condition_one logic here } function is_condition_one ( $variable = null ) { $arrKnownConditions = array ( // This can be an array from the database // An array from a file // An array from any other source // or an array of hardcoded values ); return in_array ( $variable, $arrKnownConditions ); } 

Я согласен с Godwin и toon81 и PaulPRO, но чувствую, что, если вы делаете это много, вы можете воспользоваться рефактором как частью своего решения. Рефактор выше может помочь вам организовать этот проект, а другие лучше, определив цель сравнения и позволяя вашему коду быть более читаемым и абстрагировать от этих жестко заданных значений функцию. Это, вероятно, также поможет вам повторно использовать эту проверку в других частях вашего кода с большей уверенностью.

Еще одна жизнеспособная альтернатива – использовать регулярное выражение.

 if (preg_match('^1|whatever|492$', $variable)) { ... }