基本上我想知道是否有办法缩短这样的内容:
if ($variable == "one" || $variable == "two" || $variable == "three")
以这样一种方式,可以对变量进行测试或与多个值进行比较,而无需每次都重复变量和运算符。
例如,类似这样的东西可能会有所帮助:
if ($variable == "one" or "two" or "three")
或任何导致更少打字的东西。
基本上我想知道是否有办法缩短这样的内容:
if ($variable == "one" || $variable == "two" || $variable == "three")
以这样一种方式,可以对变量进行测试或与多个值进行比较,而无需每次都重复变量和运算符。
例如,类似这样的东西可能会有所帮助:
if ($variable == "one" or "two" or "three")
或任何导致更少打字的东西。
in_array()
是我用的
if (in_array($variable, array('one','two','three'))) {
无需构造数组:
if (strstr('onetwothree', $variable))
//or case-insensitive => stristr
当然,从技术上讲,如果变量是,这将返回 true twothr
,因此添加“分隔符”可能会很方便:
if (stristr('one/two/three', $variable))//or comma's or somehting else
With switch case
switch($variable){
case 'one': case 'two': case 'three':
//do something amazing here
break;
default:
//throw new Exception("You are not worth it");
break;
}
$variable = 'one';
// ofc you could put the whole list in the in_array()
$list = ['one','two','three'];
if(in_array($variable,$list)){
echo "yep";
} else {
echo "nope";
}
usingpreg_grep
可能比 using 更短、更灵活in_array
:
if (preg_grep("/(one|two|three)/i", array($variable))) {
// ...
}
因为可选的i
模式修饰符(insensitive)可以匹配大小写字母。