开发者

PHP make if shorter

What is a true way to write like:

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

It should work similar to:

if ($variable == 'value1' || 开发者_JS百科$variable == 'value2' || $variable == 'value3') { }

Just want to make this code shorter (now I use switch).

Thanks.


Try in_array():

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

If you do happen to have a group of values separated by, in your example, a /, just explode() it and you'll have an array to plug into in_array():

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

It might seem like you could just use strpos() instead since it's a long string of values, but that's not how one would work with a delimited string of multiple values (use explode() instead, as above):

if (strpos('value1/value2/value3', $variable) !== false) {}


Also shorter:

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

Not that it's necessarily the best way to do it. The long way, using just if and || statements, is going to be simple to read even though it's lengthy, and will be the most efficient to run.


switch ($variable)
{
    case "value1":
    case "value2":
    case "value3":
        ...
        break;
    default: // else
        ...
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜