2017-08-10 20 views
-3

我有一個下面的代碼與開關盒不工作,我不知道爲什麼?如何在這裏使用開關盒&elseif

public function form_button_data($button, $key, $style) 
{ 
    $baseclass = 'qa-form-'.$style.'-button qa-form-'.$style.'-button-'.$key; 

    switch ($key){ 
     case 'answer': 
      $tekst='Answer'; 
     case 'save': 
      $tekst='Save Changes'; 
     case 'ask': 
      $tekst='Send'; 
     case 'reset': 
      $tekst='Reset to Default'; 
     case 'account': 
      $tekst='Update my Profile'; 
     case '0': 
      $tekst='Change'; 
     default: 
      $tekst=''; 
    } 

    $this->output('<button'.rtrim(' '[email protected]$button['tags']).' value="'[email protected]$button['label'].'" title="'[email protected]$button['popup'].'" type="submit"'. 
     (isset($style) ? (' class="'.$baseclass.'"') : '').'>'.$tekst.'</button>'); 
} 

當我使用if elseif條款(下面的代碼),那麼它的作品除了「0」零的情況下:

public function form_button_data($button, $key, $style) 
{ 
    $baseclass = 'qa-form-'.$style.'-button qa-form-'.$style.'-button-'.$key; 

    if ($key == "answer") {$tekst='Answer';} 
    elseif ($key == "save"){$tekst='Save Changes';} 
    elseif ($key == "ask"){$tekst='Send';} 
    elseif ($key == "reset"){$tekst='Reset to Default';} 
    elseif ($key == "account"){$tekst='Update my Profile';} 
    elseif ($key = 0){$tekst='Change';} 
    else{$tekst='';}; 

    $this->output('<button'.rtrim(' '[email protected]$button['tags']).' value="'[email protected]$button['label'].'" title="'[email protected]$button['popup'].'" type="submit"'. 
     (isset($style) ? (' class="'.$baseclass.'"') : '').'>'.$tekst.'</button>'); 
} 

爲什麼開關的情況下不能正常工作?或爲什麼在elseif中零個案例'0'不起作用?

+1

如果使用正確的語言進行標記,可能會有所幫助 – mjs

+0

您在if if的「0」情況下將值分配給$ key而不是檢查相等性。 – dspano

+0

$ key通過默認編碼獲得任何值。有時它會得到字符串,如「答案」或「保存」,有時它只會得到「0」零的值。 – esqeudero

回答

0

Switch case應在每case結束時有break;退出交換機。每個break語句終止封閉的switch語句。 break語句是必需的,因爲如果沒有它們,switch塊中的語句會落空:匹配case標籤之後的所有語句按順序執行,而不管後續case標號的表達式如何,直到遇到break語句。

在你的代碼,試試這個:

switch ($key){ 
     case 'answer': 
      $tekst='Answer'; 
      break; 
     case 'save': 
      $tekst='Save Changes'; 
      break; 
     case 'ask': 
      $tekst='Send'; 
      break; 
     case 'reset': 
      $tekst='Reset to Default'; 
      break; 
     case 'account': 
      $tekst='Update my Profile'; 
      break; 
     case '0': 
      $tekst='Change'; 
      break; 
     default: 
      $tekst=''; 
      break; 
    } 

編輯:您的第二個問題 - > 「爲什麼零的情況下 '0' 在ELSEIF不工作?」

您可能正在比較stringint,所以它不一樣。嘗試==而不是=

+0

謝謝..除了$ key = 0的情況下所有的工作與增加休息; – esqeudero

+0

維克多回答正確!刪除我的答案。 –

+0

當我寫了案例'0':$ tekst ='更改';打破;在第一行中,所有的編碼工作正常。感謝你們... – esqeudero