2014-01-27 75 views
-4

if/elseif的行爲與堆棧if語句一樣嗎?PHP的 - 如果if/elseif行爲像堆棧if語句?

if($a == 2) 
{ 
    $a = 0; 
    $b = 2; 
} 
elseif($b == 2) 
{ 
    echo "Cool?"; 
} 
+2

'爲什麼不試試自己?' –

+0

因爲我很無聊,感覺就像在得到火燒形式人機交互詢問一個愚蠢的問題。 –

+0

編輯你的問題。呃? ;) –

回答

2

基於else在那裏,不,它不會工作。爲了使它符合你的要求,你需要刪除else,並使用2 if聲明,例如;

// Set default values; 
$a = 2; 
$b = 0; 

// Check $a 
if($a == 2) 
{ 
    // Change values 
    $a = 0; 
    $ b = 2; 
} 

// Check $b, which is now 2 due to the condition matching above 
if($b == 2) 
{ 
    echo "Cool?"; 
} 

我相信你略微錯過了其他點。

它用於條件匹配,以確認多個可能性。

例如,讓我們想象一個抽獎,獎金分成幾個範圍;

數字01 - 10 = $ 5。 Numbers 11 - 20 = $ 10。 21 - 30 = 20美元。

你的代碼可能看起來像

<?php 
$random_result = mt_rand(0, 30); 

if ($random_number > 20) { 
    $amount = 20; 
} 
else if ($random_number > 10) { 
    $amount = 10; 
} 
else 
{ 
    $amount = 5; 
} 
echo 'The jackpot for today was $' . $amount . '!'; 
+0

我不認爲我完全錯過了這一點。我只是覺得有趣的是,根據我的經驗,我不能根據我的經驗來決定if/elseif是否像堆疊if語句那樣行爲(例如,您已經說明我可以做以滿足我詢問的結果)。謝謝你的擴展答案。 –

1

不,如果$a2if檢查時,elseif進行檢查。您應該考慮整個if...elseif部分的一個單個聲明,其中第一個評估爲true的條件會阻止其餘的被檢查。

如果elseif是一個單獨的if,那麼是的,它會輸出Cool?

但事實並非如此。

所以它不會。

+0

非常感謝。 –

1

您的代碼的elseif部分將不會執行,如果之前有任何if/elseif...爲真。 if/elseif/...塊按順序執行,一旦其中一個爲真,則不考慮其他塊。

+0

感謝您的時間。 –