配列により得られた順位を徐々に表示する方法

このQ&Aのポイント
  • 配列を使用して得られた順位を徐々に表示する方法についてアドバイスをお願いします。
  • アメリカ、イギリス、フランス、イタリア、ドイツ、日本、ロシア、ギリシャの気温の順位を表示するには、配列を使用し、array_multisort関数を使ってソートすることで実現できます。
  • 表示する際には、順位、国名、気温を組み合わせて表示し、気温が変化する度に順位を更新して表示します。
回答を見る
  • ベストアンサー

配列により得られた順位を徐々に表示する方法

補足欄では文字数に制限があるようなので改めて質問致します。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
  • 回答数3
  • ありがとう数1

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

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.3

>配列を使用して順位を付ける場合、flush()関数は適用できないと解釈してよろしいでしょうか? flush自体は使えますが使わなくても配列に入れた後の処理は一瞬で終わると思われるので意味が無いでしょう。

php1234
質問者

お礼

ご返信ありがとうございます。やはりPHPに関しての自分のレベルの低さを痛感致しました。これからもっと勉強致します。また何かございました時にはよろしくお願い致します。

その他の回答 (2)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

とりあえず処理中とか表示するだけなら <?php //↓タグ等で256バイト以上出力があれば不要。 echo str_repeat(" ", 256); // IE用のダミーデータ(IE自体が256バイトほどバッファするので) echo "アメリカの気温を取得中・・・<br>\n"; ob_flush(); flush(); //アメリカの現在の気温を変数 $kion1 として取得 echo "イギリスの気温を取得中・・・<br>\n"; ob_flush(); flush(); //イギリスの現在の気温を変数 $kion2 として取得 以下繰り返し のような感じになります。

  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

気温の取得に時間がかかるのであれば配列に入れて表示を開始するまでの時間は変わらないと思います。 <?php //アメリカの現在の気温を変数 $kion1 として取得 //イギリスの現在の気温を変数 $kion2 として取得 //フランスの現在の気温を変数 $kion3 として取得 //イタリアの現在の気温を変数 $kion4 として取得 //ドイツの現在の気温を変数 $kion5 として取得 //日本の現在の気温を変数 $kion6 として取得 //ロシアの現在の気温を変数 $kion7 として取得 //ギリシャの現在の気温を変数 $kion8 として取得 //この時点ですでに20秒経過していると思われる 1個づつ取得、表示、flushなら希望の表示方法になりますがソートして順位はつけられませんね。

php1234
質問者

補足

ご返信ありがとうございます。 配列を使用して順位を付ける場合、flush()関数は適用できないと解釈してよろしいでしょうか?よろしくお願い致します。

関連するQ&A

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

    前回私がしました(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
  • 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
  • 二次元配列のソート PHP

    タイトルのとおりソートを行ってくれる関数を探しております。 $buf[][]の二次元配列の変数を日付の降順に並べ替えたいのですが、そういった関数は用意されていますか? sort()、rsort()では不可能かと思います。 以下、二次元配列の値です。配列三番目の日付の降順で再格納したいです。 ( [0] => Array ( [0] => 1[1] => name1 [2] => 2006-08-18 ) [1] => Array ( [0] => 2 [1] => name2[2] => 2006-08-28 ) [2] => Array ( [0] => 3[1] => name3 [2] => 2006-08-18 ) [3] => Array ( [0] => 4 [1] => name4[2] => 2006-08-18 ) よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 順位を付ける時のスコアの重複について

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

    配列のランク付けをしたいのですが方法が分からず困っています。 例えば、 $a = array("1", "5", "3", "2", "3", "1", "1")という配列があったら $b = array("5", "1", "2", "4", "2", "5", "5")といったように値が大きい順に ソートせずランク付けして新しい配列を作れたらと考えています。 アドバイスをお願い致します。

    • ベストアンサー
    • PHP
  • 区切り文字を配列に格納する方法を教えて下さい。

    区切り文字を配列に格納する方法を教えて下さい。 $array[] = "abc,1981,1,12"; $array[] = "def,1982,2,18"; $array[] = "ghi,1991,4,12"; list($name[$i],$yy[$i],$mm[$i],$dd[$i]) = split("\,",$array[$i]); でループさせればそれぞれの変数に代入できますが、例えば $name["abc"]["yy"] = "1981"; $name["abc"]["mm"] = "1"; $name["abc"]["dd"] = "12"; のように分解するにはどうすれば良いでしょうか?

    • 締切済み
    • PHP
  • 配列から値を取得する方法。

    配列から野菜の名前を取得して表示する方法を教えてください。 取得したい野菜の名前の番号はひとつずつ改行で区切って テキストファイル(*.txt)に保存しています。 例↓ 22 484 Array ( [0] => Array ( [no] => 22 [name] => とまと ) [1] => Array ( [no] => 1508 [name] => かぼちゃ ) [2] => Array ( [no] => 5482 [name] => せろり ) [3] => Array ( [no] => 1813 [name] => にんじん ) [4] => Array ( [no] => 54118 [name] => ナス ) [5] => Array ( [no] => 484 [name] => レタス ) )

    • ベストアンサー
    • PHP
  • 配列の記述

    配列@arrayの中からある特定の順番の配列を取得したいです。 $array[1]の1について$nなどの変数を使いたいのですが、 []の中に変数をどう記述すればいいのでしょうか? $n=100; print "$array["."$n"."]"; print '$'."array["."$n"."]"; ???わからない???

  • 配列の受け渡し

    こんばんは。 あるページで使用した配列を他のページでも使いたいのですが、 こういう配列を格納した変数の受け渡しって出来るのでしょうか? 普通の変数のデータを受け渡したかったら <input type="hidden" />で直接valueに変数の値を入れれば良いですが、 配列だと自分では以下のように愚直にやる方法しか分かりません。 もっとちゃんと渡せる方法ってあるのでしょうか? <?$a=array(1,2,3,4,5);?> <? for($i=0;$i<count($aaa);$i++){ ?> <input type="hidden" value="<?=$aaa[$i]?>" name="hoge[]"/> <?}?>

    • ベストアンサー
    • PHP
  • PDO/カラム値だけを取得したい(配列ではなく)

    PDOで、配列形式ではなく、変数だけを取得したいのですが、 どうすればいいでしょうか? ・取得結果の配列から値を取り出すのではなく、PDOでの取得段階で変数だけを取得したい ・結果は1件しかないという前提 <例> userテーブルで、指定条件(=email)に合致するnameカラム $sql = "SELECT name FROM user WHERE email = :email"; このとき、  Array ( [name] => 伊藤 ) ではなく、  伊藤 だけを取得したいです

    • ベストアンサー
    • PHP

専門家に質問してみよう