PHP сделать, если короче - PullRequest
       1

PHP сделать, если короче

5 голосов
/ 03 августа 2010

Как правильно написать:

if ($variable == '(value1/value2/value3)' ) { }

Он должен работать примерно так:

if ($variable == 'value1' || $variable == 'value2' || $variable == 'value3') { }

Просто хочу сделать этот код короче (теперь я использую switch).

Спасибо.

Ответы [ 3 ]

16 голосов
/ 03 августа 2010

Попробуйте in_array():

if (in_array($variable, array('value1', 'value2', 'value3'))) {}

Если вам случится иметь группу значений, разделенных, в вашем примере, /, просто explode(), и у вас будет массив для подключения к in_array():

if (in_array($variable, explode('/', 'value1/value2/value3'))) {}

Может показаться, что вы могли бы просто использовать strpos() вместо этого, поскольку это длинная строка значений, но это не , как можно работать с разделенной строкой из нескольких значений ( вместо этого используйте explode(), как указано выше):

if (strpos('value1/value2/value3', $variable) !== false) {}
2 голосов
/ 29 апреля 2012
switch ($variable)
{
    case "value1":
    case "value2":
    case "value3":
        ...
        break;
    default: // else
        ...
}
2 голосов
/ 03 августа 2010

Также короче:

if (preg_match('#^(?:value1|value2|value3)$#', $variable) {

Не обязательно, что это лучший способ сделать это. Долгий путь, используя только если и || операторы, их будет легко читать, даже если они длинные и будут наиболее эффективными для выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...