[ColdFusion] 変数の値を比較(3/3)

  • このエントリーをはてなブックマークに追加
  • 人気ブログランキング

例題

変数url.aの値が「D1」、「D2」、「D3」の場合と、それ以外の処理がわかるようなロジックを作成

解答

<cfparam name="url.a" default="">
<cfset tmp = "">
<cfswitch expression = "#url.a#">
     <cfcase value="D1">
          <cfset tmp = "D1の処理">
     </cfcase>
     <cfcase value="D2">
          <cfset tmp = "D2の処理">
     </cfcase>
     <cfcase value="D3">
          <cfset tmp = "D3の処理">
     </cfcase>
     <cfdefaultcase>
          <cfset tmp = "D1,D2,D3以外の処理">
     </cfdefaultcase>
</cfswitch>
<cfoutput>
#tmp#
</cfoutput>

 

もちろんcfif,cfelseifで書く方法もありますが、
見やすさの点ではcfswitchですね。

 

ちなみにcfparam関数によって変数url.aが存在しない場合は
url.aの変数を生成しdefaultの値を設定しています。

 

変数が存在しないことによるエラーを回避しているわけですね。

cfparamを使わない方法を使うと以下のようになります。

 

1)

<cfif not isDefined("url.a")>
    <cfset url.a = "">
</cfif>

 

2)

cfif not StructKeyExists(url, "a")>
    <cfset url.a = "">
</cfif>

 

やり方はいろいろありますが、簡単にできる方法を使ったほうがいいですね。
プログラムのメンテナンスも楽になります。

  • このエントリーをはてなブックマークに追加
  • 人気ブログランキング

この記事に関連する記事一覧

最近の投稿
カテゴリー
タグ
アーカイブ
プロフィール