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 の場合に評価して返す文字列式 です。