- ベストアンサー
順位を付ける時のスコアの重複について
質問致します。例えばボーリングのスコアを順位をつけて並べたいのですが、参考ページ(http://oshiete1.goo.ne.jp/kotaeru.php3?q=561384)を元に以下の様に書いてみました。 ---------------------------------------- <?php $Name=array("Aさん","Bさん","Cさん","Dさん","Eさん","Fさん"); $Count=array(123,198,123,117,123,202); array_multisort($Count,SORT_DESC,SORT_NUMERIC,$Name,SORT_DESC,SORT_STRING); print("第1位:".$Count[0]." ".$Name[0]."<br>"); for($i=1;$i<count($Name);$i++){ if($Count[$i] != $Count[$i-1]){ print("第".($i+1)."位:".$Count[$i]." "); } print($Name[$i]."<br>"); } ?> ------------------------------------------------ しかしながら以上を実行してみますと順位の表示のされ方がうまくいきません。うまくいかない箇所はスコア(123)が3人並んだ場合に以下のようにしたいのですが、ならなくて苦闘しております。どのように書換えればよろしいのでしょうか。アドバイス頂ければと存じます。よろしくお願い致します。 第1位 202 Fさん 第2位 198 Bさん 第3位 123 Aさn 第3位 123 Cさn 第3位 123 Eさん 第6位 117 Dさん
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
$rank=1; for($i=0;$i<count($Name);$i++){ print("第".$rank."位:".$Count[$i]." ".$Name[$i]."<br>"); if($Count[$i] != $Count[$i+1]){ $rank=$i+2; } } 汚くて済みませんが、一応これでいけると思います。
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
$rank=-1; for($i=0;$i<count($Name);$i++){ if($Count[$rank] != $Count[$i]) $rank = $i; print("第".($rank + 1)."位:".$Count[$i]." ".$Name[$i]."\n"); }
お礼
ありがとうございました。バッチリです。また何かございましたら宜しくお願い致します。
お礼
ありがとうございました。バッチリです。また何かございましたら宜しくお願い致します。