ソートのロジックで致命的なミスしてた・・・。
ownerなどでのソート。あれ、ヤヴァイ。アホだ。
えーっと、つまり、一意でない値が入ってくるようなフィールドのソート処理全部。ええ。もう、察しの良い方はとっくに嗤っているかと。
// find系でファイルから読んだデータ($_els)を一行ずつarrayにバラして詰めているところ。 $_k = $_els[$_sort_by]; // $_sort_by はソートで指定されたフィールドに対する配列の添字。 ... // ソート対象の値をキーにして、行データをバラしてarrayにして詰め直している。 $records[$_k] = array( ... ); ... ksort($records); // ORDER_BY_DESC なら krsort
アホかと。馬鹿かと。これ、例えばownerフィールドで、同じ値が連続してたら、ファイルの下の方のレコードでどんどん上書きされていって仕舞いますよね。
orz
うーん・・・ああ、そうか。uksort()使えば良いのか。いや、そもそもソート対象をわざわざキーにする必要もないので連想配列にする必要も無くなる。usort()でイイじゃん。
<?php //... // "hoge" が、指定された $sort_by にあたる。 usort($records, create_function('$a, $b', 'if ($a["hoge"] == $b["hoge"]) return 0; '. 'return ($a["hoge"] < $b["hoge"]) ? -1 : 1;')); //... ?>
おお・・・できた。よっしゃ、えーっと・・・。
・・・
後で直しとこ。ヽ(°▽、°)ノエヘヘヘヘ。