開発部だより 第250回
こんにちは!
焼いた秋刀魚に大根おろしとポン酢で、ビールなら3リットルはいけるijです。
今回は、ColdFusionで配列をランダムにソートする場合の簡単な方法をご紹介します。
PHPなら、shuffle()という、配列をまるっとなげると、その配列の要素をランダムにソートできる関数がありますが、残念ながらColdFusionには、PHPのshuffle()に該当するような関数はありません。
「ぐぬぬ...自前で実装するか...」
「そうだ」
「そんな時は、神様、仏様、Java様」
ColdFusionから、Javaのクラスにアクセスできるので、
java.util.Collectionsクラスのメソッド、Shuffle()を利用しちゃいましょう。
[例]
<cfscript>
//対象の配列生成
questionOrder = ListToArray('1,2,3,4,5,6,7,8,9,10');
WriteOutput("ソート前");
WriteDump(questionOrder);
//java.util.Collectionsクラスのインスタンスを生成
c = CreateObject("java", "java.util.Collections");
//java.util.Collectionsの静的メソッド、Shuffle()でランダムにソート
c.Shuffle(questionOrder);
WriteOutput("ソート後");
WriteDump(questionOrder);
</cfscript>
クラスのインスタンスの生成と、ランダムにソート部分は以下のようにも記述できますね。
<cfscript>
//対象の配列生成
questionOrder = ListToArray('1,2,3,4,5,6,7,8,9,10');
WriteOutput("ソート前");
WriteDump(questionOrder);
//java.util.Collectionsクラスのインスタンスを生成、静的メソッド、Shuffle()でランダムにソート
CreateObject("java", "java.util.Collections").Shuffle(questionOrder);
WriteOutput("ソート後");
WriteDump(questionOrder);
</cfscript>
[実行結果]
いかがでしたでしょうか。
自前で実装するより簡単に、ランダムソートすることができたと思います。
それではまた
うおっと、そんなColdFusionのベストパートナー、SATTの学習管理システム(LMS)smart FORCE(スマートフォース)もよろしくお願いします(3か月ぶり8回目)