2011-03-28 73 views
0

很簡單,但這一直困擾着我。哪些是限制陳述的最佳方式?簡單!但是哪些條件陳述適用

$foo = '1'; 

if($foo === '1' || $foo === '2' || $foo === '3') 
{ 
// foo matches 
} 

or 

if($foo === '1' || '2' || '3') 
{ 
// foo matches 
} 

哪一步工作更好。有更好的解決方案嗎?

回答

4

第二個版本將始終評估爲true。

如果要壓縮對多個方案進行比較,然後使用:

if (in_array($foo, array('1', '2', '3'))) { 

如果要密切配合的精確比較===那麼你就不過需要:

if (is_string($foo) && in_array($foo, array(...))) { 
+0

該死的**我是一個人**檢查,你是5秒更快:) – 2011-03-28 23:50:39

+0

哈哈哈。 :)你們都起來票 – goingsideways 2011-03-28 23:51:52

2
$foo = 1; 

if(in_array($foo, array(1, 2, 3))){ 
    //foo matches 
} 
2

這是一種替代方案:

if($foo>0 && $foo<4){ 

} 
+0

如果$ foo總是一個整數 – afranz409 2011-03-29 00:15:32

1

第二個if語句不起作用。 PHP不能像那樣工作。當在if語句中獨立時,除0之外的任何數字(包括負數)都將評估爲true。這就是爲什麼你可以這樣做if(count($array)),而不指定count($array)必須大於0

將是一樣的,如果你曾說過:

if($foo === 1) 
{} 
elseif(2) //This will always trigger if $foo !== 1. 
{} 
elseif(3) //This will never trigger because of the last one 
{} 

每個條件是它自己的自包含的條件。而不是像「或」或「和」那樣閱讀它,而是將它看作「或如果」和「如果」。所以if $foo is 1 or if 2 or if 3而不是if $foo is 1 or 2 or 3

如果它只是數字,那麼amosrivera的解決方案是最好的。如果是針對其他類型的數據,那麼webarto/mario就有很好的解決方案。