2012-05-06 85 views
1

我們正在嘗試爲變量$day創建if/elseif語句。我們在與這個PHP相關的HTML代碼中定義了變量及其值。我將把PHP部分粘貼到這個頁面。問題是結果頁面只給出「$ day = 1」的響應。有沒有人知道這個代碼會導致這種情況發生的錯誤?我們也嘗試過使用兩個等號,但這使情況變得更糟!如果PHP中的/ Elseif語句

echo "<p>"; 
       if ($day = 1) { 
        echo "Sunday Funday! What COMMITMENT to going out!"; 
       } elseif ($day = 2) { 
        echo "The start of what's sure to be a rough week. Drink away your sorrows."; 
       } elseif ($day = 3) { 
        echo "Epic night! SO many themes at the bars!"; 
       } elseif ($day = 4) { 
        echo "Hump day!! But seriously, what are you doing...? Aren't you too hungover from last night?"; 
       } elseif ($day = 5) { 
        echo "Thirsty Thursday!! It's close enough to the weekend... right?"; 
       } elseif ($day = 6) { 
        echo "It's Friiiiiiday, Friiiiiiiday, Gotta get down on Friiiiiiiiiday!"; 
       } elseif ($day = 7) { 
        echo "It's FRATurday! Go have some fun!"; 

      } 
+2

你肯定需要2個等號,因爲= – jmort253

+2

你想用if/else嗎?像這種情況下最好使用開關, – mfadel

+2

你確實需要使用'=='。 「變得更糟」是什麼意思? – trutheality

回答

8

當您的意思是使用比較==時,您正在使用作業=

賦值語句,什麼是在右側,所以

if ($day = 1) 

相同

if (1) 

這緣於these rules相同

if (true) 

這應該解釋爲什麼程序的行爲就像它一樣,當然你現在知道如何解決它。但是,如果你使用的switch聲明它甚至會更好:

switch($day) { 
    case 1: 
     echo "Sunday Funday! What COMMITMENT to going out!"; 
     break; 
    case 2: 
     echo "The start of what's sure to be a rough week."; 
     break; 
    // etc etc 
} 
+0

當我們添加兩個等號時,整個echo語句從結果頁面中消失。 – user1377549

+1

那麼問題顯然不是比較,但'$ day'不等於您測試的任何值。你可以使用'var_dump($ day)'來查看它實際是什麼。 – Jon

2

的比較操作是==,而不是=

也可以嘗試這種查找表的方法,這是在這種情況下,清潔:

$day_msg = array(
    1 => "Sunday Funday! What COMMITMENT to going out!", 
    2 => "The start of what's sure to be a rough week. Drink away your sorrows.", 
    3 => "Epic night! SO many themes at the bars!", 
    4 => "Hump day!! But seriously, what are you doing...? Aren't you too hungover from last night?", 
    5 => "Thirsty Thursday!! It's close enough to the weekend... right?" 
    6 => "It's Friiiiiiday, Friiiiiiiday, Gotta get down on Friiiiiiiiiday!", 
    7 => "It's FRATurday! Go have some fun!" 
); 
echo "<p>"; 
echo $day_msg[$day]; 
1

你首先想到的是對的,你需要的等號。

2

你想所有的條件這樣

  if ($day == 1) { 
       echo "Sunday Funday! What COMMITMENT to going out!"; 
      } elseif ($day == 2) { 
       echo "The start of what's sure to be a rough week. Drink away your sorrows."; 
      } elseif ($day == 3) { 
       echo "Epic night! SO many themes at the bars!"; 
      } elseif ($day == 4) { 
       echo "Hump day!! But seriously, what are you doing...? Aren't you too hungover from last night?"; 
      } elseif ($day == 5) { 
       echo "Thirsty Thursday!! It's close enough to the weekend... right?"; 
      } elseif ($day == 6) { 
       echo "It's Friiiiiiday, Friiiiiiiday, Gotta get down on Friiiiiiiiiday!"; 
      } elseif ($day == 7) { 
       echo "It's FRATurday! Go have some fun!"; 

     } 
6

如果你的條件要檢查一個長長的清單,你通常不會想寫if/else語句的長鏈。而是嘗試switch塊,甚至是array圖:

$map = array(
    1 => "Sunday Funday! What COMMITMENT to going out!", 
    2 => "The start of what's sure to be a rough week. Drink away your sorrows.", 
    3 => "Epic night! SO many themes at the bars!", 
    4 => "...", 
); 

至於那麼代碼變得很簡單:

echo $map[ $day ]; 

(理想情況下,就可以使用isset支票,但對於開發階段PHP是聰明如果輸入值已經被約束/斷言,則不需要)

+0

+1用於數組映射參考。 –