编写具有多个值的if语句的更简单方法

时间:2012-10-18 19:31:55

标签: php if-statement

if(($x == "m") || ($x == "k") || ($x == "y") || ($x == "p") || ($x == "z"))

我确信有更好的方法。多次重复$x并不理想。是否有更好,更简单的方式来编写上述陈述?

编辑:

if($x == ('m' || 'k' || 'y' || 'p')

或许像上面那样?

6 个答案:

答案 0 :(得分:6)

你可以这样使用in_array

if( in_array($x, Array("m","k","y","p","z")))

或者您可以构建一个字符串并对其进行测试:

if( strpos("mkypz",$x) !== false)

或者使用正则表达式:

if( preg_match("/[mkypz]/",$x))

或使用switch

switch($x) {
    case "m":
    case "k":
    case "y":
    case "p":
    case "z":
        // do something
        break;
}

最后两个可能不是一个好主意,但它取决于你正在做什么,$x来自哪里等等。我只是想说明有很多方法可以做此

答案 1 :(得分:0)

您可以构建一个值数组并使用in_array()。

$check = array('11','23','44')
if(!in_array($x, $check)){
     .... do stuff 
 }

或做一个开关

switch($x){
   case "11":
   case "23":
   case "44":
       echo "match:" break;
   default: 
       echo "no match"; break;  
   }

可能性无穷无尽......

答案 2 :(得分:0)

使用in_array(),bool in_array(混合$ needle,数组$ haystack [,bool $ strict = FALSE])

答案 3 :(得分:0)

您可以使用in_array()函数。

来自php文档站点。

<?php
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
    echo "Got Irix";
}
if (in_array("mac", $os)) {
    echo "Got mac";
}
?>

PHP documentation

答案 4 :(得分:0)

你可以使用strpos:

if ( strpos( "mkyxpz" , $x) !== false )

答案 5 :(得分:0)

也许,而不是if,考虑switch

switch($x) {
    case 'm':
    case 'k':
    case 'y':
    case 'p':
    case 'z':
        [statements];
        break;
    default:
        [more statements];
        break;
}

请注意,$x的值将“落入”每个case条件,直到达到break语句为止。