IIF  
説明

Boolean 条件付きのダイナミックな式を評価します。式が true または false のどちらであるかによって、2 つの文字列式の 1 つをダイナミックに評価し、その結果を返します。この関数は、HTML に cfif タグをインラインで組み込むときに便利です。

通常の条件付きの処理については、cfif を参照してください。エラー処理については、cftry を参照してください。詳細については、『ColdFusion MX 開発ガイド』 を参照してください。

 
戻り値

結果が true の場合は、Evaluate(string_expression1) の値。結果が false の場合は、Evaluate(string_expression2) の値。

 
カテゴリ

決定関数、ダイナミック評価関数

 
関数のシンタックス
IIf(condition, string_expression1, string_expression2)
 
関連項目

DE、Evaluate

 
パラメータ

 
使用方法

IIf 関数は、次のコードの省略形です。

<cfif condition>
   <cfset result = Evaluate(string_expression1)>
<cfelse>
   <cfset result = Evaluate(string_expression2)>
</cfif>

式 string_expression1 と string_expression2 は文字列式である必要があります。したがって、これらの式は、IIf のパラメータとして直接評価されません。例 :

IIf(y is 0, DE("Error"), x/y)

y=0 の場合は、3 番めの式が x/0 の値になり有効でないため、エラーが発生します。

ColdFusion は、string_expression1 と string_expression2 を評価します。文字列自体を返すには、DE 関数を使用してください。

メモ: string_expression1 または string_expression2 でシャープ記号 (#) を使う場合、ColdFusion ではシャープ記号の中の式が最初に評価されます。シャープ記号を誤って使用すると、IIf 関数で予期せぬ結果が起こる可能性があります。たとえば、string_expression1 の式全体をシャープ記号 (#) で囲んだ場合に、string_expression1 の中に未定義の変数があると、"Error Resolving Parameter" というエラーが発生して関数は正しく実行されません。

変数が未定義の場合、ColdFusion では、この関数を処理する際にエラーが発生します。次の例で、この問題を示します。

#IIf(IsDefined("Form.Deliver"), DE(Form.Deliver), DE("no"))#

これにより、「Error resolving parameter FORM.DELIVER」 が返されます。

この問題を避けるには、DE 関数、および Evaluate 関数をコードで次のように使用します。

#IIf(IsDefined("Form.Deliver"), Evaluate(DE("Form.Deliver")), DE("no"))#

これにより、"no" が返され、ColdFusion ではエラーが発生しません。

次の例では、LocalVar が未定義です。ただし、LocalVar をシャープ記号 (#) で囲まなければ、このコードは正しく機能します。

<cfoutput>
   #IIf(IsDefined("LocalVar"), "LocalVar",
      DE("変数が定義されていません。"))#
</cfoutput>

出力は次のようになります。

   変数が定義されていません。

次のコード内のように LocalVar をシャープ記号 (#) で囲むとエラーが発生し、パラメータの変換エラーメッセージが出力されます。これは、ColdFusion により、最初の状態である IsDefined("LocalVar") が評価されなかったためです。

別の例を示します。

<cfoutput>
#IIf(IsDefined("LocalVar"), DE("#LocalVar#"), DE("変数が定義されていません。"))#
</cfoutput>

エラーメッセージは次のようになります。

   Error resolving parameter LOCALVAR

LocalVar はシャープ記号 (#) により最初に評価されるため、DE 関数は LocalVar の評価の影響を受けません。

 
<h3>IIf Function の例</h3>
<p>IIf は、条件を評価し、Boolean の結果により string expression 1 または string expression 2 を
評価します。<I>(true: expression 1 を実行; false: expression 2 を実行)</I>.</p>
<p>式 
IIf( Hour(Now()) GTE 12, 
   DE("午後または夕方"),
   DE("朝"))
is:<br><b>
<cfoutput>
   #IIf( Hour(Now()) GTE 12,
DE("午後または夕方"),
DE("朝"))#
</cfoutput>
</b>
CONDITION  
ブール値として評価できる任意の式です。
STRING_EXPRESSION1  
文字列、または文字列を含んでいる変数です。条件が true の場合に評価して返す文字列式 です。
STRING_EXPRESSION2  
文字列、または文字列を含んでいる変数です。条件が false の場合に評価して返す文字列式 です。