前のページでご紹介した if文の条件文で、cfelseifが続いてしまうような条件の場合は代わりにswitch文で条件分岐を行うことができます。switch文の条件フローで使用するタグは、<cfswitch>, <cfcase>, <cfdefaultcase> タグです。
<cfswitch expression="式"> <cfcase value="1番目のケース"> 1番目のケースと一致した場合に表示や処理を行うHTML, CFML </cfcase> <cfcase value="2番目のケース"> 2番目のケースと一致した場合に表示や処理を行うHTML, CFML </cfcase> ... <cfdefaultcase> どのケースとも一致しなかった場合に表示や処理を行うHTML, CFML </cfdefaultcase> </cfswitch>
上記の<cfcase>は、<cfswitch>〜</cfswitch>の範囲内で一つ以上指定します。valueに指定した値が一致すると<cfcase>〜</cfcase>の間の処理を実行します。<cfdefaultcase>は、指定しないか、または1個を<cfswitch>〜</cfswitch>の最後に指定します。これは、どのケースにも一致しなかった場合に使用できます。例を下記に紹介します。
<cfset favColor="赤"> あなたの好きな色は、 <cfswitch expression="#favColor#"> <cfcase value="青"> 青色 </cfcase> <cfcase value="赤"> 赤色 </cfcase> <cfcase value="緑"> 緑色 </cfcase> <cfdefaultcase> それ以外の色 </cfdefaultcase> </cfswitch> です。
上記は、ローカル変数 favColorの値に応じて、好きな色を画面に表示するサンプルです。上のコードを実行すると、<cfcase value="赤">が一致するので、画面には「あなたの好きな色は、赤色です。」と表示されます。
1つの<cfcase>で指定する値に、複数の値を指定することができます。複数の値をリスト形式(デフォルトでは、カンマで区切った文字列)を指定することができます。例を下記に紹介します。
<cfset favColor="赤"> あなたの好きな色は、 <cfswitch expression="#favColor#"> <cfcase value="青,水,紺"> 青系の色 </cfcase> <cfcase value="赤,橙,ピンク"> 赤系の色 </cfcase> <cfcase value="緑,黄緑"> 緑系の色 </cfcase> <cfdefaultcase> それ以外の色 </cfdefaultcase> </cfswitch> です。
上記のように、各<cfcase>で複数の値を指定してケースを指定することができます。上記の例を実行すると「あなたの好きな色は、赤系の色です。」と表示されます。