- ベストアンサー
csvデータを二つの値で並べ替えしたい
id date sex 1 20101110 男 2 20101110 女 3 20101114 男 4 20101115 男 5 20101115 男 6 20101115 女 7 20101115 男 8 20101115 男 9 20101115 女 10 20101115 男 というタブ区切りのcsvデータがあるとします。 これを、日付・性別の順番でソートしたいのですが、どのようにしたらいいかわかりません。 MySQLでのORDER BY date,sex のようなことがしたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
確かそんな関数もあったな、と思ったらやっぱりあった。 http://jp.php.net/manual/ja/function.array-multisort.php 複雑なことがしたい場合は、一時的にデータベースに流し込んでもいいし、好きなように。
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
usortします <? $filename="data.csv"; $handle = fopen($filename, "r"); $headflg=true; $count=0; while (($row = fgetcsv($handle,1024, "\t")) !== FALSE) { $rows[]=$row; } fclose($handle); usort($rows,"sort_date_sex"); print "<pre>\n"; print_r($rows); print "</pre>\n"; function sort_date_sex($a, $b){ if($a[1] < $b[1]) return -1; if($a[1] > $b[1]) return 1; if($a[2] < $b[2]) return -1; if($a[2] > $b[2]) return 1; if($a[0] < $b[0]) return -1; if($a[0] > $b[0]) return 1; return 0; } ?>
- Willyt
- ベストアンサー率25% (2858/11131)
そのデータをエクセルで表に読み込めば簡単にソーティングできますよね。それではダメなのでしょうか?
補足
すみません、PHPで処理して、WEB上で表示させたいのです。