【PHP】

環境-----
 CentOs 4.2
 PHP 4.3.9

質問-----
あるCSVデータがあります。
(例)
key1,key2,key3
-----------------
a,5,あ
c,2,い
f,4,え
d,3,う
e,1,お


これを、ソートしたいのですが、
データベースなら、order byで簡単なのですが、データベースを利用しない方法で
うまいやり方が思いつきません。

何か良いclassやfunctionがあればご紹介ください。
pearの使用も可です。

回答の条件
  • 1人2回まで
  • 登録:2006/06/15 19:29:11
  • 終了:2006/06/21 10:15:46

ベストアンサー

id:kidd-number5 No.1

kidd-number5回答回数117ベストアンサー獲得回数152006/06/15 19:51:45

ポイント28pt

array_multisortを使った

こちらの例はいかがでしょうか?

http://winofsql.jp/php/material/arraysort.htm

※大量の場合は一括して読むのはちょっと。。という感じですが。

id:keijiro

ありがとうございます。

参考になります。

おっしゃるとおり、データの量が多いときは、とても遅くなりそうですね。

2006/06/15 20:52:55

その他の回答(3件)

id:kidd-number5 No.1

kidd-number5回答回数117ベストアンサー獲得回数152006/06/15 19:51:45ここでベストアンサー

ポイント28pt

array_multisortを使った

こちらの例はいかがでしょうか?

http://winofsql.jp/php/material/arraysort.htm

※大量の場合は一括して読むのはちょっと。。という感じですが。

id:keijiro

ありがとうございます。

参考になります。

おっしゃるとおり、データの量が多いときは、とても遅くなりそうですね。

2006/06/15 20:52:55
id:Kumappus No.2

くまっぷす回答回数3784ベストアンサー獲得回数1852006/06/15 19:55:26

ポイント28pt

http://www.res-system.com/item/508

http://php.s3.to/man/function.array-multisort.html

array_multisort関数があります。

質問の例だとkey1, key2, key3をひとつの配列にして、その配列が並んだ配列を作った上でarray_multisortをかければいいはずです。

id:keijiro

ありがとうございます。

2006/06/15 20:54:25
id:moonwolf No.3

MoonWolf回答回数30ベストアンサー獲得回数22006/06/15 20:39:26

ポイント6pt

MySQLにはメモリ上に一時的なテーブルを作るヒープテーブルという機能があります。

/* test_tableからselectしたデータを元にtestというヒープテーブルを作成する */

CREATE TABLE test TYPE=HEAP SELECT key1,key2,key3 FROM test_table;

/* メモリ内でソートする */

SELECT key1,key2,key3 FROM test_table order by key1,key2,key3;

/* テーブルを削除する */

DROP TABLE test_table;

データベースを利用しないという条件には一致しませんが、この方法であればデータベースのORDER BYと必ず一致するので整合性の面では有効です。

id:keijiro

この方法は知っていました。

しかし、今回は、MySQLを利用できないので、残念ですが、この手法は却下です。

ありがとうございます。

2006/06/15 20:55:30
id:elf No.4

えるふん回答回数76ベストアンサー獲得回数82006/06/16 12:24:09

ポイント28pt

usort()という関数を使用することで自分の好きなソートができるようになります.

http://php.net/usort

手順は

  • 2つの要素を比較する関数を作成する(引数は2つ,その2つを自分のやりたい方法で比較し,負数・ゼロ・整数でソート基準を返す)
  • usort()でソートしたい配列と関数名を渡す

になります.

id:keijiro

ありがとうございます。

後ほどゆっくり調べます

2006/06/18 01:39:12

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません