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;
}

最後の 2 つはおそらく良い考えではありませんが、何をしているのか、どこ$xから来ているのかなどによって異なります。これを行うには多くの方法があることを説明したかっただけです。

于 2012-10-18T19:35:50.067 に答える
0

strpos を使用できます。

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

于 2012-10-18T19:35:50.130 に答える
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

の代わりにif、次のことを検討してswitchください。

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

の値は、ステートメントに到達するまで$xすべての条件を「通過」することに注意してください。casebreak

于 2012-10-18T19:37:19.160 に答える
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 、配列 $haystack [, bool $strict = FALSE ] )

于 2012-10-18T19:33:23.577 に答える