我在我的foreach循环中有一个if
语句。该条件长约125个字符。还有其他方法可以缩短这个吗?如何缩短`if语句`
if ($col == 'foo' || $col == 'bar' || $col == 'baz' || $col == 'fubar' || $col == 'spam' || $col == 'eggs') {
continue;
}
注:对不起的条件值家伙,'a'
,'b'
混乱,...的意思是不同的字符串。
我在我的foreach循环中有一个if
语句。该条件长约125个字符。还有其他方法可以缩短这个吗?如何缩短`if语句`
if ($col == 'foo' || $col == 'bar' || $col == 'baz' || $col == 'fubar' || $col == 'spam' || $col == 'eggs') {
continue;
}
注:对不起的条件值家伙,'a'
,'b'
混乱,...的意思是不同的字符串。
存放在一维数组的所有元素首先,你的情况,这将是这样的:
$array = array('a','b','c','d','e','f');
然后使用PHP的内置函数in_array()来检查是否存在于数组$山坳,在你这个样子:
in_array($col, $array);
整个代码:
$array = array('a','b','c','d','e','f');
if(in_array($col, $array)) {
continue;
}
我会用一个数组:
if(in_array($col, ['a','b','c','d','e','f'])) {
continue;
}
但要知道比这是不是一个真正的优化,更有可读性增强。你以前的发言没有任何错误。
我会用一个事实,即通常有ASCII,所以你可以做这样的事情
if ($col >= 'a' && $col <='f') {
continue;
}
恩,对不起,我的意思是字符串是变量。如果我将英文单词作为列值,该怎么办? –
尝试是这样的:
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()
调用中。
第一个问题总是:“你究竟在做什么”。你是否想要匹配列表中的单词?你想匹配字符串模式吗?你是否试图在PHP中匹配你从数据库中检索的东西,并且可以让数据库做到这一点?你已经有3个答案,他们都没有试图找出你实际上想做的事情。 –
@ Mike'Pomax'Kamermans我正在尝试匹配列表中的单词(col)..条件是我想要在页面上显示的例外。 –
你的例子也是非常人为的:看起来这些都不是你想要停止过滤的实际单词,所以:添加更多细节。描述你实际正在做什么,而不是用玩具词,你可能会得到更准确,更有用的答案(因为它感觉就像你问了一个[XY问题](http://meta.stackexchange)。问题/问题/ 66377 /这是什么问题)问题) –