アプリ版:「スタンプのみでお礼する」機能のリリースについて

1<>pass<>ip<>名前<>url<>spell<>kana<>initial1<>initial2<>点数<><>日付<>

上記のようなデータが1列づつ保存されているのですが、このデータの中の「名前」と「点数」のみを抽出し、
点数(100点満点)でランキングを10件表示する、というようなスクリプトを探しています。

<table>
<tr>
<td>順位</td>
<td>名前</td>
<td>得点</td>
</tr>
<tr>
<td>1位</td>
<td>あああ</td>
<td>90</td>
</tr>
<tr>
<td>2位</td>
<td>いいい</td>
<td>80</td>
</tr>
<tr>
<td>3位</td>
<td>ううう</td>
<td>70</td>
</tr>
</table>

かなり特殊な為、これだけのスクリプトは無いとは思うのですが、同様のデータをランキングするようなスクリプトがあれば、それを流用したいと考えています

ランキングの表示件数は10件でなくても構いません。
5件以上であれば、問題ありません。
「日付<>」の後には、まだまだ多くのデータが保存されており、全部書く必要がないかな?と思い省略させて頂きました

余分な機能がついていてもかまいません、どなたかこういったデータをランキングするスクリプトをご存じないでしょうか?
また、一から作ってみようかとも思い、いろいろ調べてみたりするのですが、全く筆が進みません

本当は、これだけの処理をするスクリプトがあればいいのでしょうが、かなり特化しすぎていると思いますので、作成の上で参考になるサイト、流用できそうなスクリプトなどありましたらご教授願います。
スクリプトはperlもしくはPHPでお願いします

A 回答 (2件)

サンプル:


%data=undef;
while(<DATA>){
@field = split /<>/;
$data{$field[3]}=$field[9];
}
$rank=1;
foreach $name (sort { $data{$b} <=> $data{$a} } keys %data){
print "rank:$rank, 名前:$name, 得点:$data{$name}\n";
last if $rank++ == 10; #10位まで
}
__END__
1<>pass<>ip<>A<>url<>spell<>kana<>initial1<>initial2<>20<><>日付<>
2<>pass<>ip<>B<>url<>spell<>kana<>initial1<>initial2<>53<><>日付<>
3<>pass<>ip<>C<>url<>spell<>kana<>initial1<>initial2<>42<><>日付<>
4<>pass<>ip<>D<>url<>spell<>kana<>initial1<>initial2<>100<><>日付<>
5<>pass<>ip<>E<>url<>spell<>kana<>initial1<>initial2<>80<><>日付<>
6<>pass<>ip<>F<>url<>spell<>kana<>initial1<>initial2<>72<><>日付<>
7<>pass<>ip<>G<>url<>spell<>kana<>initial1<>initial2<>33<><>日付<>
8<>pass<>ip<>H<>url<>spell<>kana<>initial1<>initial2<>11<><>日付<>
9<>pass<>ip<>I<>url<>spell<>kana<>initial1<>initial2<>91<><>日付<>
10<>pass<>ip<>J<>url<>spell<>kana<>initial1<>initial2<>64<><>日付<>

この回答への補足

せっかくサンプルを記載して頂けたのですが、これをどうすればいいのかが皆目検討がつきません…

補足日時:2005/12/07 20:13
    • good
    • 0

>これをどうすればいいのかが皆目検討がつきません…


<DATA>
の部分を実際のファイルハンドルに
例えば
open(RANKING, "rankdata.txt");
みたいにして
<RANKING>
に置き換えて
print でTABLEを書き出せばいいです。
    • good
    • 0
この回答へのお礼

ありがとうございます!!
なんとか、希望する通りの表示ができるようになりました!

お礼日時:2005/12/09 14:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!