こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

補足欄では文字数に制限があるようなので改めて質問致します。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秒ぐらい処理に時間がかかるため、一挙に表示するよりも徐々に表示した方が良いと思いました。アドバイスの程よろしくお願い致します。

投稿日時 - 2006-09-29 00:06:03

QNo.2438488

暇なときに回答ください

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

>配列を使用して順位を付ける場合、flush()関数は適用できないと解釈してよろしいでしょうか?

flush自体は使えますが使わなくても配列に入れた後の処理は一瞬で終わると思われるので意味が無いでしょう。

投稿日時 - 2006-09-30 07:43:40

お礼

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

投稿日時 - 2006-10-01 09:34:06

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

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

のような感じになります。

投稿日時 - 2006-09-29 09:26:19

ANo.1

気温の取得に時間がかかるのであれば配列に入れて表示を開始するまでの時間は変わらないと思います。
<?php
//アメリカの現在の気温を変数 $kion1 として取得
//イギリスの現在の気温を変数 $kion2 として取得
//フランスの現在の気温を変数 $kion3 として取得
//イタリアの現在の気温を変数 $kion4 として取得
//ドイツの現在の気温を変数 $kion5 として取得
//日本の現在の気温を変数 $kion6 として取得
//ロシアの現在の気温を変数 $kion7 として取得
//ギリシャの現在の気温を変数 $kion8 として取得
//この時点ですでに20秒経過していると思われる

1個づつ取得、表示、flushなら希望の表示方法になりますがソートして順位はつけられませんね。

投稿日時 - 2006-09-29 09:02:18

補足

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

投稿日時 - 2006-09-29 15:07:32

あなたにオススメの質問