- ベストアンサー
二次元配列のソートのやり方が・・・
こんにちは。 現在ダウンロードランキングを作成中です。 直接ダウンロードファイルにリンクせず、 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で 読み込み、アクセスの多いものから順に表示したいのですが、 二次元配列のソートのやり方が分かりません・・・。 ご存知の方がおられましたら、お手数ですがご教授ください。 宜しくお願いします。
- みんなの回答 (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()を使ってください。
その他の回答 (1)
- osamuy
- ベストアンサー率42% (1231/2878)
array( コードNo => アクセス数 ); みたいなデータ構造で問題ないなら、arsort()が使えると思います。 <?php $a = array( "NO0001" => 5, "NO0002" => 10, "NO0003" => 1); arsort( $a ); foreach ($a as $k => $v ){ echo $k, ":",$v,"\n"; } ?> データ構造が複雑な場合は、uasort()等、比較関数を指定できるものを使用すれば良いかと。
お礼
お返事が遅くなり申し訳ありません。 配列の基本的な概念を理解していないため(- -;) お教えいただいたやり方を理解するのに 時間がかかってしまいました・・・。 No.2の方のやり方でとりあえず出来たのですが、 もう一度勉強しなおしたいと思います。 ありがとうございました。
お礼
出来ましたー!! なるほど、数値、ファイル名と並び替えるんですね。 ありがとうございました!