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

我确信有更好的方法来解决这个问题。$x重复多次并不理想。有没有更好更简单的方法来写上面的语句?

编辑:

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

也许像上面的东西?

4

6 回答 6

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来自哪里等等。我只是想说明有很多方法可以做到这一点。

于 2012-10-18T19:35:50.067 回答
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;  
   }

可能性是无穷无尽的......

于 2012-10-18T19:33:03.967 回答
0

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

于 2012-10-18T19:33:23.577 回答
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 文档

于 2012-10-18T19:34:07.850 回答
0

您可以使用 strpos:

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

于 2012-10-18T19:35:50.130 回答
0

也许,而不是if,考虑switch

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

请注意, 的值$x将“通过”每个case条件,直到它到达一个break语句。

于 2012-10-18T19:37:19.160 回答