
質問があります。
ゴルフの結果の順位を表示したいと考えています。
----------------------------
$score['makoto'] = -6;
$score['yuko'] = -2;
$score['kenta'] = 0;
$score['hiroshi'] = 0;
$score['yuko'] = 3;
----------------------------
<出力結果>
第1位:-6
makotoさん
第2位:-2
yukoさん
第3位:0
hiroshiさん
kentaさん
第5位:3
yukoさん
-----------------------------------------
名前の重複はあります。
ゴルフの結果なのでマイナスが大きい人が
順位が高いくなります。
また同じスコアの人は名前をソートして、
次の順位は変わります(3位→5位)
どうか宜しくお願いいたします。m(_ _)m
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
配列ソート関数は元々あるので
順位の付け方の部分の参考例を書きます。
$score = array(
'yuko1' => -2,
'yuko2' => 3,
'kenta' => 0,
'makoto' => -6,
'hiroshi' => 0
);
asort($score);
$num = 0;
$i = 1;
$prev = -100;
foreach($score as $name => $point) {
if($point != $prev) {
$prev = $point;
$num = $i;
}
echo "第{$num}位 : {$point}\n";
echo "{$name}さん\n";
++$i;
}
No.4
- 回答日時:
こんにちは。
PHPは、やりはじめて日が浅いんで、
外してるかも知れんが、こんな感じ?
$Name と $Score はそれぞれ対応する名前と点数で。
<?php
$Name=array("yuko","kenta","makoto","hiroshi","yuko");
$Score=array(-2,0,-6,0,3);
array_multisort($Score,SORT_ASC,SORT_NUMERIC,$Name,SORT_ASC,SORT_STRING);
print("第1位:".$Score[0]."<br>".$Name[0]."さん<br>");
for($i=1;$i<count($Name);$i++){
if($Score[$i] != $Score[$i-1]){
print("第".($i+1)."位:".$Score[$i]."<br>");
}
print($Name[$i]."さん<br>");
}
?>
No.3
- 回答日時:
> マイナスが大きい人が順位が高い
は問題無いのでは。関数が用意されていると思いますし、逆順にすればいいだけの話で。
重複名があるというのは仕様上問題があるのでは。プレーヤーIDを与えるなど名前とは別に一意な識別名を用意するべきです。
で、ソートですが私は勉強不足でアルゴリズム等は存じておらずこの手の方法しか考えつかないのですが、
1. スコアが同じユーザー同士を括ってグループとして分類する
2. グループ内のソートを行う
3. グループのソートを行う
4. グループの人数を評価して順位付けを行う
規模が示されていないので何とも言えませんが SQL やコーディングから工夫すればそれなりに使える速さで組めると思います。
No.2
- 回答日時:
結構複雑ですね。
1.名前のソート
2.点数のソート
3.順位付け
4.印刷
ソートは単純なバブルソート(隣接交換法)がいいでしょう。
EXCELなら似たことは簡単にできるのですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpのheader("Location:#pos")...
-
PHP8でWarning:Undefined varia...
-
フォームで戻った際に入力済み...
-
csvファイルについて教えて下さ...
-
セッション関数を使わずにファ...
-
composerをインストールしたい...
-
SplFileObject を利用したとき...
-
PHPSpreadsheetによる書き出し...
-
phpの問い合わせフォームを作っ...
-
marginの値でマイナス値を設定...
-
submitで思うようにページが遷...
-
HTML PHP ラジオボタンのイベント
-
php でqiitaのサイトにあったフ...
-
PHPの勉強してます。 配列のと...
-
BASIC認証のフォームをデザイン...
-
アップロードファイルを表示す...
-
複数のパソコンの中の1つのパソ...
-
返信機能のツリー構造の深さを...
-
PHPについて。
-
PHPからCSVをアップロード後、m...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プルダウンメニューにDBの内容...
-
順位を付ける時のスコアの重複...
-
cakephp2.6でfindを使い合計値...
-
「ローマ字 -> ひらがな」へPHP...
-
Zend_Form_Element_Hash
-
xmlからphpで出力したデータを...
-
1~100の数字の9の倍数だけ同じ...
-
月一覧を取得するには?(20120...
-
codeigniterのページネーション...
-
file_get_contentsなどでrefere...
-
PHP 別ドメインへのファイル保存法
-
file_existsでファイル名の部分...
-
配列をループでたくさん宣言し...
-
C言語の配列をPush(追加)する...
-
Resource id #3 と表示されま...
-
foreachで上限回数指定方法また...
-
マッチング処理(1:N)
-
CArrayのソート
-
PHPのカッコ[ ]の使い方について
-
String だと「 ByRef引数の型が...
おすすめ情報