• ベストアンサー

phpでcsvの並び替えを行いたい

phpでcsvに入ってるデータベースの最後の行を最初に持ってきて保存するにはどうしたらよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • agunuz
  • ベストアンサー率65% (288/438)
回答No.2

>csvに入ってるデータベースの最後の行を最初に持ってきて保存す CSV形式のテキストファイルなのか、CSV形式でメモリ上に保持しているのか、あるいは(本当に)データベースのvarcharの列にCSV形式で保存しているのか・・・まったく読み取れません。 普通は「CSV」といえばCSVファイル(テキストファイル)を指しますし、「データベース」であれば最初とか最後とかいう概念自体がありません(orderを指定しなければ順序は不定とみなすのが一般的です)。 CSVファイルであれば単純なテキストファイル処理です(CSVということを意識する必要がありません)。排他処理を考えなくていいなら $arr = file($filename, FILE_IGNORE_NEW_LINES); $last = array_pop($arr); array_unshift($arr, $last); file_put_contents($filename, implode(PHP_EOL, $arr)); だけです。

その他の回答 (1)

noname#244856
noname#244856
回答No.1

PHPから直接CSVデータを「効率よく」書き換えることは出来ません。そのような作業では全て取得して配列に格納した後、配列の先頭に挿入し、またCSVデータに変換して上書きで保存し直す必要があります。以下選択肢。 1. MySQL・PostgreSQL・SQLiteなどのデータベースを利用する。(CSVはデータベースとは言えません) PHPでデータベースに接続するときのまとめ http://qiita.com/mpyw/items/b00b72c5c95aac573b71 2. serialize関数/unserialize関数を利用する。CSV形式ではなくシリアル形式となります。「どうせ効率のいい書き換えが出来ないならば、PHPでもっと扱いやすくしてしまおう」という発想です。変数の内容をそのままファイルに保存したり、ファイルから変数に復元したりすることが出来ます。CSVではもうちょっと泥臭い処理が必要になるので、テキストエディタでCSVファイルを直接編集したいなどの希望がなければシリアルの方がおすすめです。 serialize http://php.net/manual/ja/function.serialize.php unserialize http://www.php.net/manual/ja/function.unserialize.php array_unshift http://php.net/manual/ja/function.array-unshift.php

関連するQ&A