什麼是寫像一個真正的辦法:PHP做,如果短
if ($variable == '(value1/value2/value3)') { }
它應該類似於:
if ($variable == 'value1' || $variable == 'value2' || $variable == 'value3') { }
只想把這段代碼較短(現在我使用switch
)。
謝謝。
什麼是寫像一個真正的辦法:PHP做,如果短
if ($variable == '(value1/value2/value3)') { }
它應該類似於:
if ($variable == 'value1' || $variable == 'value2' || $variable == 'value3') { }
只想把這段代碼較短(現在我使用switch
)。
謝謝。
嘗試in_array()
:
if (in_array($variable, array('value1', 'value2', 'value3'))) {}
如果你碰巧有一組由分隔的值,在你的例子,一個/
,只是explode()
它,你就會有一個數組插到in_array()
:
if (in_array($variable, explode('/', 'value1/value2/value3'))) {}
這似乎是你可以只使用strpos()
,而不是因爲它是值的長字符串,但是這不一個將如何工作具有多個值的分隔字符串(如上面使用explode()
代替,):
if (strpos('value1/value2/value3', $variable) !== false) {}
使用'strpos'並得到類似於「value1/val」或「ue1」的值 – 2010-08-03 03:23:41
@valya:正是因此,'strpos()'不是正確的方法,即使它看起來有意義第一個:) – BoltClock 2010-08-03 03:24:36
但使用正則表達式不是很簡單嗎?像:'if(preg_match('/%$ 6^$%^ - 'jil9(*&((&&(*&((&%%% 88&value1 *^*&^))&*!@#!value2% *^* ^&*^*^* value3','(value1/value2/value3)');'?有時候,如果你問我,你們就不會認爲是直的; – karim79 2010-08-03 03:27:49
還短:
if (preg_match('#^(?:value1|value2|value3)$#', $variable) {
不在於它是一定要做到這一點的最好辦法。漫長的道路,只使用和||語句,即使冗長,也會很容易閱讀,並且運行效率最高。
'價值[1-3]'適當的修改,以適應PHP的正則表達式也可以。 – 2013-04-03 01:15:28
我認爲顯然value1,value2和value3只是爲了舉例的佔位符。 – thomasrutter 2013-04-03 03:07:26
switch ($variable)
{
case "value1":
case "value2":
case "value3":
...
break;
default: // else
...
}
我會堅持'switch'自己。 – TRiG 2010-09-14 09:20:11