我的foreach循环中有一个if
语句。条件长约125个字符。还有其他方法可以缩短这个吗?
if ($col == 'foo' || $col == 'bar' || $col == 'baz' || $col == 'fubar' || $col == 'spam' || $col == 'eggs') {
continue;
}
注意:抱歉条件值的混淆,'a'
,'b'
,......意味着各种各样的字符串。
答案 0 :(得分:6)
首先将所有元素存储在单维数组中,在您的情况下,它将如下所示:
$array = array('a','b','c','d','e','f');
然后在内置函数in_array()中使用php来检查$ col是否存在于数组中,在这里看起来像:
in_array($col, $array);
整个代码:
$array = array('a','b','c','d','e','f');
if(in_array($col, $array)) {
continue;
}
答案 1 :(得分:2)
我会使用数组:
if(in_array($col, ['a','b','c','d','e','f'])) {
continue;
}
但请注意,这不是一个真正的优化,而是更多的可读性增强。你先前的陈述没有错。
答案 2 :(得分:2)
我会使用通常ascii的事实,所以你可以做类似
的事情 if ($col >= 'a' && $col <='f') {
continue;
}
答案 3 :(得分:0)
尝试这样的事情:
if (in_array($col, array('foo', 'bar', 'baz', 'fubar', 'spam', 'eggs'))
{
continue;
}
如果你正在使用PHP 5.4+,你可以让它看起来更优雅:
if (in_array($col, ['foo', 'bar', 'baz', 'fubar', 'spam', 'eggs'])
{
continue;
}
如果您需要进行严格比较,例如在'x' === $x
中,请将, true
添加到in_array()
来电。