if(($x == "m") || ($x == "k") || ($x == "y") || ($x == "p") || ($x == "z"))
我确信有更好的方法。多次重复$x
并不理想。是否有更好,更简单的方式来编写上述陈述?
编辑:
if($x == ('m' || 'k' || 'y' || 'p')
或许像上面那样?
答案 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";
}
?>
答案 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
语句为止。