| ColdFusion MX | ||
| 目 次 > CFML リファレンス > ColdFusion 関数 > 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)
パラメータ |
説明 |
|---|---|
condition |
ブール値として評価できる任意の式です。 |
string_expression1 |
文字列、または文字列を含んでいる変数です。条件が true の場合に評価して返す文字列式です。 |
string_expression2 |
文字列、または文字列を含んでいる変数です。条件が false の場合に評価して返す文字列式です。 |
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>
|
|
||
| 目 次 > CFML リファレンス > ColdFusion 関数 > IIf |
|
|
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/coldfusion/6.1_jp/htmldocs2/funct117.htm