順位のところを画像にする方法

このQ&Aのポイント
  • ボーリングのスコアを順位をつけて並べる方法として、画像に「第1位」と書かれた画像を使用することが考えられます。
  • 順位を表す数字の画像を用意し、その画像と順位が対応するように表示することで、見栄えの良い順位表示が可能です。
  • 具体的には、ボーリングのスコアと対応する順位を計算し、該当する順位の画像を表示させることで、効果的な順位表示ができます。
回答を見る
  • ベストアンサー

順位のところを画像にする方法

前回私がしました(http://oshiete1.goo.ne.jp/qa2429369.html)の質問に通ずるのですが、新たに質問させて頂きます。 例えばボーリングのスコアを順位をつけて並べたいのですが、 -------------------------------------- <?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); $rank=-1; for($i=0;$i<count($Name);$i++){ if($Count[$rank] != $Count[$i]) $rank = $i; print("第".($rank + 1)."位:".$Count[$i]." ".$Name[$i]."\n"); } ?> 以上の順位の所を「○位」と書かれた画像にしたいのですが、以下のやり方でOKでしょうか?とりあえず表示されたのですが、もっと合理的な良い方法があるかと思いまして。 ---------------------------------------- 「第1位」と書かれた画像→0.gif 「第2位」と書かれた画像→1.gif 「第3位」と書かれた画像→2.gif ・      ・      ・ という風に上の画像を用意しておきます。そこで <?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); $rank=-1; for($i=0;$i<count($Name);$i++){ if($Count[$rank] != $Count[$i]) $rank = $i; print("<img src='".$rank.".gif'>:".$Count[$i]." ".$Name[$i]."\n"); } ?> ------------------------------------------------------------ どなたか吟味の程よろしくお願い致します。

  • PHP
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • cybert
  • ベストアンサー率56% (18/32)
回答No.1

書いてみたけど、あんまり変わらなかった。少し文字数は減ったはず。 $Name=array("Aさん","Bさん","Cさん","Dさん","Eさん","Fさん"); $Count=array(123,198,123,117,123,202); arsort($Count); $i = 1; foreach($Count as $key => $value){ print "<img src={$i}.gif>{$value}{$Name[$key]}\r\n"; $i++; } *************** <img src=1.gif>202Fさん <img src=2.gif>198Bさん <img src=3.gif>123Eさん <img src=4.gif>123Cさん <img src=5.gif>123Aさん <img src=6.gif>117Dさん

php1234
質問者

お礼

訳ありまして返信が遅れました。解決しました。ありがとうございました。

関連するQ&A

  • 順位を付ける時のスコアの重複について

    質問致します。例えばボーリングのスコアを順位をつけて並べたいのですが、参考ページ(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さん 

    • ベストアンサー
    • PHP
  • flush()関数でページを徐々に表示する方法

    質問致します。PHPスクリプトを処理する際、全て処理し終わった後、いっきにページに表示されるのが普通だと思うのですが、これを段階的に表示したいのですが、それには出力バッファをオフにする。つまりflush()関数を使えばOKと聞きました。以下の例でいえば、どの場所にこのflush()関数を入れれば良いのでしょうか? <?php $Name=array("Aさん","Bさん","Cさん","Dさん","Eさん","Fさん"・・・この後1000件続く); $Count=array(123,198,123,117,123,202・・・この後1000件続く); 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>"); } ?> 以上のように1000件もの順位を表す為、徐々に表示したいというのが私のやりたい事です。 参考ページ(http://oshiete1.goo.ne.jp/kotaeru.php3?q=1248483)等を見たのですが、初心者な者で太刀打ちできないでおります。 具体的にflush()関数をここに入れるという風にご指摘頂ければ幸いでございます。よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 配列により得られた順位を徐々に表示する方法

    補足欄では文字数に制限があるようなので改めて質問致します。http://oshiete1.goo.ne.jp/kotaeru.php3?q=2435625 の質問の続きですが、テーブルを使わないで、新たに新しい例を挙げて書き直して見ました。以下のような(8カ国の現在の気温の順位)場合、処理結果を徐々に表示させたいのですが、flush()関数をどの位置に書き込めば良いのでしょうか? <?php //アメリカの現在の気温を変数 $kion1 として取得 //イギリスの現在の気温を変数 $kion2 として取得 //フランスの現在の気温を変数 $kion3 として取得 //イタリアの現在の気温を変数 $kion4 として取得 //ドイツの現在の気温を変数 $kion5 として取得 //日本の現在の気温を変数 $kion6 として取得 //ロシアの現在の気温を変数 $kion7 として取得 //ギリシャの現在の気温を変数 $kion8 として取得 $Name=array("アメリカ","イギリス","フランス","イタリア","ドイツ","日本","ロシア","ギリシャ"); $Kion=array($kion1,$kion2,$kion3,$kion4,$kion5,$kion6,$kion7$kion8); array_multisort($Kion,SORT_DESC,SORT_NUMERIC,$Name,SORT_DESC,SORT_STRING); $rank=1; for($i=0;$i<count($Name);$i++){ print("第".$rank."位".$Name[$i]." ".$Kion[$i]."<br>"); if($Kion[$i] != $Kion[$i+1]){ $rank=$i+2; } } ?> 変化が著しい気温を変数として配列に入れているので配列の要素が8個しかなくても表示されるまで20秒ぐらい処理に時間がかかるため、一挙に表示するよりも徐々に表示した方が良いと思いました。アドバイスの程よろしくお願い致します。

    • ベストアンサー
    • PHP
  • ファイルの読み込みについて

    こんばんは。今回は以前質問させて頂いた質問(http://oshiete1.goo.ne.jp/qa2425208.html)の延長線上にあると思いますがお許しねがいます。 あるサイトにあるいくつかの(ここでは5個とします)キーワードの数を調べて、更にそれに順位をつけたいのですが、以下のよな手順でやりたいと考えております。 (1)対象となるサイトから5個のキーワード(a,b,c,d,e)の数を導く -----------------seach.php------------------------------------- <?php $lines= file('対象サイトのURL'); $nn = count($lines); $key1 = 'a'; $key2 = 'b'; $key3 = 'c'; $key4 = 'd'; $key5 = 'e'; for ( $i=0; $i<=$nn; $i++ ){ $html = htmlspecialchars ($lines[$i]); $countA = $countA + substr_count($html, $key1); $countB = $countB+ substr_count($html, $key2); $countC = $countC + substr_count($html, $key3); $countD = $countD + substr_count($html, $key4); $countE = $countE + substr_count($html, $key5); } echo($countA); echo($countB); echo($countC); echo($countD); echo($countE); ?> 上のファイルを search.php とします。 (2)search.php を利用して5個のキーワードの数を数の多い順に並べる -------------------------------------------------------------- <?php ob_start(); include("search.php"); ob_clean(); print $search_value; $Count=array($countA,$countB,$countC,$countD,$countE); $Name=array("a","b","c","d","e"); array_multisort($Count,SORT_DESC,SORT_NUMERIC,$Name,SORT_DESC,SORT_STRING); for($i=0;$i<5;$i++){ print($Name[$i]); print($Count[$i]); } ?> とりあえず以上の方法で動作するのですが、対象サイトがPHPファイルだと実際に表示されるまで30分以上かかる場合もあります。まだキーワードの数が5個なのにこれだけ時間がかかるという事はキーワードの数が10個以上になったら更に表示されるまでの時間がかかってしまいますよね。 表示される時間をもっと速くさせる別の方法はございますでしょうか?アドバイスの程よろしくお願い致します。

    • ベストアンサー
    • PHP
  • array_multisortがうまくできません

    ある調味料に対応するスコアを設定して、 最もスコアが高い調味料を3つ選別しようと思います。 <?php $name=array("satou","sio" ,"miso","sansyo","wasabi"); $score=array(12,18,13,24,19); $res=array('name'=>$name,'score'=>$score); $output=array_multisort($res['score'],SORT_DESC);// print($output[name][0]); print($output[name][1]); print($output[name][2]); ?> 考えたのですが、なぜうまくいかないのかが分かりません。 どなたか訂正箇所を教えてください。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • array_multisortについて

    階層が深いのですが以下のような多次元配列があります。PHP5です。 $data['data'][0]['name'] = 'あああ'; $data['data'][0]['price0'] = '80'; $data['data'][1]['name'] = 'いいい'; $data['data'][1]['price0'] = '350'; $data['data'][2]['name'] = 'ううう'; $data['data'][2]['price0'] = '514'; これをprice0の値でソートしたく調べたところarray_multisortが使えそうで 以下のようにしてみましたがエラーになってしまいます。 array_multisort($price0, SORT_DESC, $data['data']); マニュアルを見たのですがよくわからずでどうすればうまくソートできるでしょうか?

    • 締切済み
    • PHP
  • 連想配列を array_multisort() でphp4、php5の違い

    いつもお世話になります。 連想配列をarray_multisort()でソートしようとしています。 php5のサーバでは思うように動作するのですが、 php4のサーバでは、ソートされません。 print_r($ary); Array ( [BuID] => 11 [BuName] => aaaa [yymmdd] => 080507 [DateDisp] => 08年05月07日(水) [DateType] => 1210086000 [TaikaiName] => AAAA [HRef] => [AnkName] => ) Array ( [BuID] => 12 [BuName] => bbbb [yymmdd] => 080822 [DateDisp] => 08年08月22日(金) [DateType] => 1219330800 [TaikaiName] => BBBBBBBB [HRef] => [AnkName] => ) ・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・ の様な連想配列をyymmddでソートしようとしています。 php5.2.6だと、 foreach($ary as $key => $row){ $yymmdd[$key] = $row['yymmdd']; } array_multisort($yymmdd,SORT_DESC,$ary); で、$aryにyymmddで並び替えられた配列が入ります。 しかし、php4.2.2では、ソートされず、もとの配列がそのまま$aryに入ってしまいます。 array_multisort()は、phpのバージョンによって動作が異なるような記載もありません。 どなたかわかる方見えましたらよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • CGIのforeach文

    CGIを作成していてforeach文のところを通ってくれません。原因が不明なのですが下記でおかしいことなどがあったらおしえてください。 お願いします。 $entrycgi = "./touhyou.cgi"; $Location = '../images'; $imgVote = $Location."/click.gif"; $votefile = "./database/vtbl.dat"; sub vote_form{ print "<FORM ACTION=\"$entrycgi\" METHOD=\"post\" NAME=\"Form\">\n"; print "<INPUT TYPE=\"hidden\" NAME=\"proc\" VALUE='entry'>\n"; print "<INPUT TYPE=\"hidden\" NAME=\"Action\">\n"; print "<TABLE><TR><TD><IMG SRC=\"$Location."/top.gif\"></TD></TR></TABLE>\n"; open(FILE, "+<$votefile"); @output = <FILE>; close(FILE); print "<TABLE><TR>\n"; $i = 1; @output_sort = sort { $b <=> $a } @output; foreach $output_sort(@output_sort){ ($COUNT, $NM, $FILENM, $NO) = split(/\,/, $output_sort); $filename = $Location.$FILENM; print "<IMG SRC='$filename' HEIGHT=100 WIDTH=100></TD>\n"; if ($i == 5) { last; } else { print "<TD width=\"50\"></TD>\n"; $i++; } } print "</TR></TABLE>\n"; }

    • ベストアンサー
    • CGI
  • C言語 ソートについて

    #include <stdio.h> #include <stdbool.h> #define NUM_ARRAY 4 #define NUM_DATA 5 int count_swap = 0; // 交換回数 int count_comparison = 0; // 比較回数 void selection_sort(int a[], int n) { } int main(void) { int data[NUM_ARRAY][NUM_DATA] = {{9, 7, 5, 6, 8}, {9, 8, 7, 6, 5}, {5, 6, 7, 8, 9}, {5, 6, 8, 7, 9}}; for (int i = 0; i < NUM_ARRAY; i++) { count_swap = 0; count_comparison = 0; int d[NUM_DATA]; copy_array(data[i], d, NUM_DATA); // 配列のコピー printf("----------------\n"); print_array(d, NUM_DATA); // ソート前の配列の表示 selection_sort(d, NUM_DATA); // 挿入ソートの実行 print_array(d, NUM_DATA); // ソート後の配列の表示 printf("比較回数: %d\n", count_comparison); // 比較回数の表示 printf("交換回数: %d\n", count_swap); // 交換回数の表示 } } 上の雛形を使って選択ソートを実行するという問題なのですが途中までそれっぽいのは出来たのですが上手くいかないので解答をお願いします。 下に自分が今書いているものを置いておきます。 #include <stdbool.h> #include <stdio.h> #define NUM_ARRAY 4 #define NUM_DATA 5 int count_swap = 0; int count_comparison = 0; void swap(int d[], int i, int j) { count_swap += 1; printf("swap a[%d] = %d, a[%d] = %d\n", i, d[i], j, d[j]); int temp = d[i]; d[i] = d[j]; d[j] = temp; } void copy_array(int *a, int *b, int n) { for (int i = 0; i < n; i++) { b[i] = a[i]; } } void print_array(int d[], int n) { for (int i = 0; i < n; i++) { printf("%d ", d[i]); } printf("\n"); } bool compare(int d[], int i, int j) { count_comparison += 1; printf("compare a[%d] = %d, a[%d] = %d\n", i, d[i], j, d[j]); if (d[i] > d[j]) { return true; } else { return false; } } void selection_sort(int d[], int n) { int min; for (int i = 0; i < n - 1; i++) { min = i; for (int j = i + 1; j < i; j++) { if (compare(d, min, j)) { min = j; } } swap(d, i, min); print_array(d, n); } } int main(void) { int data[NUM_ARRAY][NUM_DATA] = { {9, 7, 5, 6, 8}, {9, 8, 7, 6, 5}, {5, 6, 7, 8, 9}, {5, 6, 8, 7, 9}}; for (int i = 0; i < NUM_ARRAY; i++) { count_swap = 0; count_comparison = 0; int d[NUM_DATA]; copy_array(data[i], d, NUM_DATA); // 配列のコピー printf("----------------\n"); print_array(d, NUM_DATA); // ソート前の配列の表⽰ selection_sort(d, NUM_DATA); // 挿⼊ソートの実⾏ print_array(d, NUM_DATA); // ソート後の配列の表⽰ printf("⽐較回数: %d\n", count_comparison); // ⽐較回数の表⽰ printf("交換回数: %d\n", count_swap); // 交換回数の表⽰ } }

  • 画像を使ったアクセスカウンターですが。。。

    どなたか教えていただければ大変ありがたいです。 画像(0.gif~9.gif)を使用し、アクセスカウンターを作る 次のソースの内、 ------------------------------------------------------------------- #!c:/perl/bin/perl require './sub_lock.pl'; $countfile = "./count.log"; $lockdir = "./lockdir"; exit unless(&lock($lockdir)); open(COUNTFILE, "+<$countfile"); chomp($count=<COUNTFILE>); $count++; seek(COUNTFILE, 0, 0); print COUNTFILE "$count\n"; truncate(COUNTFILE, tell(COUNTFILE)); close(COUNTFILE); &unlock($lockdir); $count_img = sprintf("%04d", $count); $count_img =~ s/(.)/<img src=".\/images\/$1.gif">/g; print "content-type:text/html\n\n"; print $count_img; exit; ------------------------------------------------------------------- $count_img =~ s/(.)/<img src=".\/images\/$1.gif">/g; の 「(.)」と「$1」になっているところが、どうも理解できなくて 困っています。 「=~ s」がパターンマッチであることだけは知っています。 CGI辞書などを調べてもやはり意味がわからず、お手上げ状態です。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • CGI

専門家に質問してみよう