プロが教える店舗&オフィスのセキュリティ対策術

いつも大変参考にさせていただいております。
csvファイルの読み込みとソートをしたく、ネットや過去ログ等を相当調べたのですが、完全に詰まってしまいました。
(検索キーワード:「php csv ソート」「php 二次元配列 ソート」など)
とても困っています。どなたかよろしくお願いします。


以下のようなcsvファイルを読み込みソートしたいのです。

■csvファイル
20110803, A, りんご
20111215, B, みかん
20110306, A, みかん
20110620, A, りんご
20110215, B, りんご

■個別にやりたい処理
(1)、左列の日付で昇順ソートしてすべて表示
(2)、「A」を含む行をすべて表示(日付順)
(3)、「A」+「りんご」を含む行をすべて表示(日付順)

□補足
csvをfgetcsvで読み込み、テーブルに入れて表示するところまではできました。
csvの行は増えていきます(max100行位)。列は固定。

A 回答 (2件)

テーブルというのは、HTMLのテーブルタグって意味に捉えて良いのでしょうか。



とにかく、PHPでCSVを全行ロードして配列に格納は出来ているということですよね?

もしそうであれば、「■個別にやりたい処理」に関してですが、これは、
・ある検索値に対して必要なものを部分的に取り出す処理
・取り出してきた内容をソートする処理

の二つに分類されると思います。
そのうちの、最初の「必要なものを部分的に取り出す処理」に関しては問題ないと思います。

その処理を行った後、自分の決めた実装で、ソートを行いたい、という場合には、
http://www.php.net/manual/ja/function.usort.php
こちらの関数を使います。
使用例)
<?php
usort($data, 'my_sort');

print_r($data);

//降順の場合
function my_sort($a, $b){
if($a[0] < $b[0]) return 1;
if($a[0] > $b[0]) return -1;
return 0;
}


?>
    • good
    • 0
この回答へのお礼

ご回答有り難うございます。
説明不足ですみません。

・HTMLのテーブルタグです。
・CSVを全行ロードして配列に格納できています。

つまりやりたい事は

1.CSVを全行ロードして配列に格納し日付順にソートする
2.ある検索値に対して必要なものを部分的に取り出し表示する

です。

usort関数ですね。
引き続き頑張ってみます。
有り難うございました!

お礼日時:2011/02/25 08:00

こんばんは。



これは何でやりたいのでしょう???
>テーブルに入れて表示するところまではできました
SQLですか?
だったら簡単ですが・・・。

何が困っているのかがわからないです・・・。
    • good
    • 0
この回答へのお礼

書き込み有り難うございます。
補足が分かりにくくすみません。
試行錯誤する内に「HTMLテーブルタグに入れて表示するところまでは何とかできた」と言う意味です。
ただこれはcsvをそのまま表示するだけのPHPで、質問文の様にソートする処理の仕方(PHPの書き方)が分からなくて困っていたのです。
引き続き頑張ってみます。
有り難うございました。。

お礼日時:2011/02/25 07:32

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