ColdFusion MX
目 次 > CFML リファレンス > ColdFusion 関数 > IIf O

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)

DEEvaluate

パラメータ

説明

condition

ブール値として評価できる任意の式です。

string_expression1

文字列、または文字列を含んでいる変数です。条件が true の場合に評価して返す文字列式です。

string_expression2

文字列、または文字列を含んでいる変数です。条件が false の場合に評価して返す文字列式です。

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

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

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

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

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

ColdFusion は、string_expression1string_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>

目 次 > CFML リファレンス > ColdFusion 関数 > IIf O

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/coldfusion/6.1_jp/htmldocs2/funct117.htm