dポイントプレゼントキャンペーン実施中!

こんにちは。

現在ダウンロードランキングを作成中です。
直接ダウンロードファイルにリンクせず、
download.php?code=XXX としてdownload.phpに飛ばし、
ロケーションでcodeにマッチしたファイルへアクセスする
というやり方です。

download.phpではranking_file.txtに
「コードNo、アクセス数」の形で書き込んでいます。
■ranking_file.txtの中身(カンマ区切り)
NO0001,5
NO0002,10
NO0003,1
以下略)

今度はこのranking_file.txtをranking.phpで
読み込み、アクセスの多いものから順に表示したいのですが、
二次元配列のソートのやり方が分かりません・・・。

ご存知の方がおられましたら、お手数ですがご教授ください。
宜しくお願いします。

A 回答 (2件)

ログファイルを修正します。


-----ranking_file.txt------
5,NO0001
10,NO0002
1,NO0003
---------------------------


<?

$fd=file("ranking_file.txt");
rsort($fd,SORT_NUMERIC); //数値的に降順に並び替え
for($i=0;$i<count($fd);$i++){
$price=explode(",",$fd[$i]);
$num=$i+1; //順位表示用
echo "ランキング${num}位/ファイル名:".$price[0]."/カウント数:".price[1]."<br>";
}
?>
一部のサーバーではfile関数で開いたファイルは
すべて文字列型変数に認識されてしまいますので、
その場合fopen()を使ってください。
    • good
    • 0
この回答へのお礼

出来ましたー!!

なるほど、数値、ファイル名と並び替えるんですね。
ありがとうございました!

お礼日時:2005/03/08 12:29

array( コードNo => アクセス数 );


みたいなデータ構造で問題ないなら、arsort()が使えると思います。

<?php
$a = array( "NO0001" => 5, "NO0002" => 10, "NO0003" => 1);
arsort( $a );
foreach ($a as $k => $v ){ echo $k, ":",$v,"\n"; }
?>

データ構造が複雑な場合は、uasort()等、比較関数を指定できるものを使用すれば良いかと。

参考URL:http://php.planetmirror.com/manual/ja/function.a …
    • good
    • 0
この回答へのお礼

お返事が遅くなり申し訳ありません。

配列の基本的な概念を理解していないため(- -;)
お教えいただいたやり方を理解するのに
時間がかかってしまいました・・・。

No.2の方のやり方でとりあえず出来たのですが、
もう一度勉強しなおしたいと思います。

ありがとうございました。

お礼日時:2005/03/08 12:25

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