2017-08-10 3 views
-3

スイッチケースが次のようなコードを持っていますが、なぜうまくいかないのですか?switch case&elseif hereの使い方

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 elseifの "0"の場合に$ keyに割り当てる値。 – dspano

+0

$ keyは、デフォルトのコーディングで任意の値を取得します。時には "答え"や "保存"などの文字列を取得することがあり、時には "0"の値を取得することもあります。 – esqeudero

答えて

0

Switch caseは、スイッチを終了するたびにcaseの末尾にbreak;とする必要があります。各break文は、囲みswitch文を終了します。ブレーク・ステートメントがなければ、スイッチ・ブロック内のステートメントは次のようになります。ブレイク・ステートメントに遭遇するまで、後続のケース・ラベルの式に関係なく、一致するケース・ラベルの後のすべてのステートメントが順番に実行されます。 "ELSEIFで、なぜゼロの場合は '0' 動作しない?"> - あなたの2番目の質問:あなたのコードで

、この試してみてください。

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; 
    } 

を編集することは

おそらくstringintを比較しているので、同じではありません。 =の代わりに==を試してください。

+0

ありがとうございました.. $ key = 0の場合を除いて、すべてブレークを追加しました。 – esqeudero

+0

ビクターが正しく答えました!私の答えを削除する。 –

+0

私がケース '0'を書いたとき:$ tekst = 'Change';ブレーク;最初の行ですべてのコーディングがうまくいきました。君たちありがとう... – esqeudero

関連する問題