罪と罰++二律背反


* ランキングを設置してみたいのですが [#i188e52a]

- ページ: [[罪罰改造板3]]
- 投稿者: [[ゆき]]
- 優先順位: 重要
- 状態: 着手
- カテゴリー: 罪罰管理者の雑談
- 投稿日: 2008-12-16 (火) 23:51:21
- バージョン: 

** メッセージ [#nc9577ff]
# UAランキング
$top_ua         = $CP{'top_ua'};
$nm_ua         = $CP{'nm_ua'};
$top2_ua         = $CP{'top2_ua'};
$nm2_ua         = $CP{'nm2_ua'};
$top3_ua         = $CP{'top3_ua'};
$nm3_ua         = $CP{'nm3_ua'};
 if($top_ua<$ua){
   $top3_ua = $top2_ua;
   $nm3_ua = $nm2_ua;
 # UAランキング
 $top_ua         = $CP{'top_ua'};
 $nm_ua         = $CP{'nm_ua'};
 $top2_ua         = $CP{'top2_ua'};
 $nm2_ua         = $CP{'nm2_ua'};
 $top3_ua         = $CP{'top3_ua'};
 $nm3_ua         = $CP{'nm3_ua'};
  if($top_ua<$ua){
    $top3_ua = $top2_ua;
    $nm3_ua = $nm2_ua;
 
    $top2_ua = $top_ua;
    $nm2_ua = $nm_ua;
 
    $top_ua = $ua;
    $nm_ua = $nm;
   }elsif($top2_ua<$ua && $nm_ua ne $nm){
 	$top3_ua = $top2_ua;
 	$nm3_ua = $nm2_ua;
 
 	$top2_ua = $ua;
 	$nm2_ua = $nm;
  }elsif($top3_ua<$ua && $nm2_ua ne $nm && $nm_ua ne $nm){
 	$top3_ua = $ua;
 	$nm3_ua = $nm;
 }

   $top2_ua = $top_ua;
   $nm2_ua = $nm_ua;

   $top_ua = $ua;
   $nm_ua = $nm;
  }elsif($top2_ua<$ua && $nm_ua ne $nm){
	$top3_ua = $top2_ua;
	$nm3_ua = $nm2_ua;

	$top2_ua = $ua;
	$nm2_ua = $nm;
 }elsif($top3_ua<$ua && $nm2_ua ne $nm && $nm_ua ne $nm){
	$top3_ua = $ua;
	$nm3_ua = $nm;
}

としてみたのですが、よく見たら全然ダメですね。雑すぎるし、これじゃ下位から上ってくと1位から3位まで同一人物にのっとられてしまうし。

ここはaquawikiの賢者様の意見を聞きながらもうちょっと綺麗でちゃんとしたスクリプトを作っていこうかなと思ったわけです。

どうかよろしくお願いします。
--------
- とりあえず配列化した方が使いやすいですか? --  &new{2008-12-16 (火) 23:53:47};
- とりあえずif($top_ua<$ua && $nm_ua ne $nm){$top_ua=$ua;}を追加しないと1位になった人がステ上がる度に更新されて3位までのっとられそうですね -- [[ゆき]] &new{2008-12-17 (水) 00:01:11};
- neではなくeqでした --  &new{2008-12-17 (水) 00:06:25};
- neではなくeqでした --  &new{2008-12-17 (水) 02:48:19};
- top1のみなら$top_uaとして比較更新しやすいですが、top3まで表示ならば@top_uaな感じで配列収納して3件いっぺんに比較&ソートかけたほうが楽な気がしますが。。(もしくは表示だけなら、adminの一覧を流用して上位3件だけ表示とか?) -- [[mike]] &new{2008-12-17 (水) 14:04:33};
- ちなみに上書き対策ですが、ifの使い方次第です。>> $top1_ua<$uaであれば$nm1_uaと$nmを比較して不一致で上書き。 uaの比較が下であれば$top2_uaと比較。。で、$top1_uaと同じ作業を繰り返す。 また下であれば。。。(略)>>ネストしていく感じでよいかと思います。。。が、すごい長くなります。。。^^; -- [[mike]] &new{2008-12-17 (水) 14:07:01};
- 
  if($top_ua<$ua){ 
       $top2_ua=$top_ua if($nm2_ua eq $nm);
       $nm2_ua=$nm_ua   if($nm2_ua eq $nm);
       $top_ua=$ua;$nm_ua=nm;     
  }elsif($top2_ua<$ua && $nm_ua ne $nm){
       $top3_ua=$top2_ua if($nm3_ua eq $nm);
       $nm3_ua=$nm2_ua   if($nm3_ua eq $nm);
       $top2_ua=$ua;$nm2_ua=nm;
  }elsif($top3_ua<$ua && $nm2_ua ne $nm && $nm_ua ne $nm){
       $top3_ua=$ua;$nm3_ua=nm;
  } 
少ししかいぢってませんが、こんな感じではどうでしょう。綺麗に書くのは苦手ですが。。。 -- [[je]] &new{2008-12-23 (火) 01:18:55};
- ありがとうございます! やっぱり素直にソート使って表示したほうが楽そうですね;; -- [[ゆき]] &new{2008-12-30 (火) 17:19:11};

#comment


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS