我在我的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 /這是什麼問題)問題) –