プロが教えるわが家の防犯対策術!

質問致します。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()関数をここに入れるという風にご指摘頂ければ幸いでございます。よろしくお願い致します。

A 回答 (3件)

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>");
ob_flush();
flush();
}

この回答への補足

ご返信ありがとうございます。
print 以降の部分にテーブルを使っている場合、例えば、以下のような場合ではいかがでしょうか?

<?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);

$rank=1;
for($i=0;$i<count($Name);$i++){
print("<table border='0' cellspacing='1' cellpadding='0' width='270' bgcolor='#999999'><tr bgcolor='#FFFFFF'><td id='key1' width='40'>第".$rank."位</td><td id='key1'>".$Name[$i]."</td><td id='key1' width='30'>".$Count[$i]."</td></tr></table>");
if($Count[$i] != $Count[$i+1]){
$rank=$i+2;
}
}
?>

以上のスクリプト文の場合も、ob_flush(); と
flush(); を同じところに入れればOKでしょうか?一度試してみたのですが、徐々に(段階的に)表示されず、何秒後かに一挙に表示されてしまします。お手数お掛けしますがよろしくお願い致します。

補足日時:2006/09/27 21:17
    • good
    • 0
この回答へのお礼

質問をほったらかしにしてしまい申し訳ございません。ありがとうございました。また何かございましたら宜しくお願い致します。

お礼日時:2006/10/01 09:37
    • good
    • 0

TABLEタグは最後まで出力しないとブラウザが表示しないので


TABLEタグをやめるか、CSSで段階的に表示する設定ができたと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!