リスト系関数を使用する際の注意事項

ColdFusionにはリストという専用のデータ型はありません。区切り文字(カンマ等)を含む文字列を値として用いることで、用意されているリスト系の関数を利用してリスト操作を行うことができます。

リスト関数の一覧は下記をご覧ください。

http://help.adobe.com/ja_JP/ColdFusion/10.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec1a60c-7ffc.html#WSc3ff6d0ea77859461172e0811cbec22c24-6a42

リスト関数を使用する際には一点ColdFusion特有の注意点があります。それは、リストの項目が空だった場合の処理についてです。例えば "a,b,c,,,d"という文字列には、c と d の間に2つの空の項目があります。この文字列をColdFusionでリストとして取り扱う際、デフォルトの動作では空の項目を無視する動きとなります。つまり ColdFusion内部の動作としては、"a,b,c,d"として処理を行うため、4つの項目を持つリストとして処理を行います。

(参考) 『ColdFusion 10 アプリケーションの開発』 [CFML プログラミング言語] - [ColdFusion 変数の使用] - [データ型] - 「リスト」
http://help.adobe.com/ja_JP/ColdFusion/10.0/Developing/WSf01dbd23413dda0e1fb08f8f11feb424aa7-8000.htmlcf

上記の仕様は、空の項目もリストとして扱いたい場合には不便な動作となるため、ColdFusion 9 からはリストを操作する系の関数の引数に”includeEmptyValues”というオプション項目が追加されました。このオプション項目にtrueを指定することで、空の項目もリストの値の一つとして取り扱うことが可能となっています。

 

シンタックス(例 ListGetAt関数の場合)

#ListGetAt(list, position [, delimiters, includeEmptyValues ])#

 

コーディング例

<cfset lTest="a,b,c,,,d">
 
オプション指定なし(デフォルトの動作)
<cfoutput>#ListLen(lTest)#:#ListGetAt(lTest,4)#</cfoutput>
 
オプション指定あり
<cfoutput>#ListLen(lTest,",","true")#:#ListGetAt(lTest,4,",","true")#</cfoutput>

 

出力例

 

4:d
6:

 

 

 




記事公開日:2013年02月01日
最終更新日:2013年09月12日

 


x

Sample Modal Window

This is just a sample…

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit iaculis libero sed tristique. Quisque mollis dolor non tellus placerat vitae sodales lectus porta. Curabitur ut suscipit tellus. Maecenas rhoncus, ante vitae vehicula vestibulum, metus sapien dapibus tellus, et mattis dolor neque vitae nisl. Nullam eleifend ultrices ipsum eget pretium. Curabitur semper metus ut ante adipiscing nec volutpat sem rutrum. Nullam a nisi lacus, non interdum ante. Vivamus ante augue, commodo vel egestas sed, pharetra nec dui. Quisque sed tellus felis. Donec ipsum mauris, sagittis eu accumsan in, aliquam non ipsum.

Vestibulum tempor nunc nec felis scelerisque eget elementum erat dignissim. Ut vel ipsum mollis orci venenatis luctus. Aenean vehicula quam vel quam porttitor ac iaculis elit pulvinar. Proin consequat, ipsum eu venenatis semper, justo turpis posuere tortor, ac placerat metus nisl et lectus. Nulla cursus dui id nunc ullamcorper sed semper nisl lobortis. Aliquam erat volutpat. Phasellus arcu ante, imperdiet in ornare sed, laoreet eu massa.