2014年09月02日

ColdFusionで配列をランダムにソートする

開発部だより 第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>

[実行結果]
20140902murakami.jpg

いかがでしたでしょうか。
自前で実装するより簡単に、ランダムソートすることができたと思います。

それではまた手(パー)

うおっと、そんなColdFusionのベストパートナー、SATTの学習管理システム(LMS)smart FORCE(スマートフォース)もよろしくお願いしますexclamation×2(3か月ぶり8回目)
posted by ij at 17:57
開発部だより | コメント(0) | トラックバック(0)
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック