- ベストアンサー
phpのソート方法と要約文
- phpでのソート方法について教えてください。具体的には、あるログファイルから特定の条件に合うデータを抽出し、そのデータを特定の順序でソートして保存する方法が知りたいです。
- ログファイルから指定の条件に合うデータを抽出し、計算した結果を用いてソートする方法が知りたいです。具体的には、ログファイルから1番目のデータが2番目のデータよりも大きいデータのみを対象に抽出し、そのデータを1番目のデータから2番目のデータを引いた数でソートしたいです。
- phpを使用してログファイルの処理を効率的に行いたいです。具体的な要件は、ログファイルから特定の条件に合うデータを抽出し、そのデータを計算した結果でソートし、新しいログファイルに保存することです。この処理を一度に実行する方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
このくらいなら力技でゴリゴリ書いてもいいような気がします。 <?php $data = file('log.txt'); $out = array(); foreach ($data as $val) { $arr = str_getcsv($val); $diff = $arr[0] - $arr[1]; if ($diff < 0) { continue; } array_shift($arr); array_shift($arr); array_unshift($arr, $diff); $out[] = implode(',', $arr); } usort($out, 'ucomp'); $fp = fopen('out.txt', 'w'); foreach ($out as $val) { fwrite($fp, $val . PHP_EOL); } fclose($fp); print "Done"; function ucomp($arg1, $arg2) { $arr1 = str_getcsv($arg1); $arr2 = str_getcsv($arg2); if ($arr1[0] == $arr2[0]) { return 0; } return ($arr1[0] - $arr2[0]) ? -1 : 1; }
その他の回答 (1)
- 4017B
- ベストアンサー率73% (1336/1814)
PHPのver.は末尾のマイナーバージョンまで書かないと意味が無いです。 4と5が全く別物なのは当然として。v4.12 と v4.22 とかでも、同じ関数でも使える引数が違っていたり、処理が異なっている場合もあります。 /*--我々はエスパーでは無い!--*/
お礼
4と5では使えるものが違う程度の知識しかなく質問の仕方も悪く申し訳ありません。 4なら殆どは4で利用できるものと思い込んでおりました。 ご指摘ありがとうございました。
お礼
ありがとうございました。 どうしてもエラーになってしまいましたので 調べてみましたところご教授いただいた方法ですと str_getcsvがphp5以降しか利用できないようでしたので その部分をphp4代であるなら利用できるような方法はないものかと調べましたが どうしても自分では解決できなかったため別の方法にて自己解決致しました。 バージョン4と5で利用できない関数があるないとおおまかな部分しか言えず 申し訳ありませんでした。 お蔭様で自己解決する事ができました。
補足
お忙しい中、ご回答いただきましてありがとうございます。 はじめに環境を書くべきでした。 大変申し訳ありません。 ご教授いただきましたソースですとphp4ですと動かないようです。 サーバーがphp4の環境でも稼動できるようにするにはどうすれば良いでしょうか。 当方の説明不足で何度もお手数をおかけして申し訳ありません。