質問: PHPでCSVの先頭行に新たなデータを挿入したいのですが、困っています。 fopenをaでは最終行に追記されてしまい、wではCSVの既存のデータが消えてしまいます。 試行錯誤してみたのですが、うまくいきません。 意外と簡単にできるのではないかと思っていたのですが、困っています。 アドバイスをいただければと思います。 よろしくお願いします。 ``` $ShiftJIS=array($name,$gender,$age,$body,$sports,date("Y年/m月/d日 H時i分s秒")); mb_convert_variables('Shift_JIS', 'UTF-8', $ShiftJIS); $csv=fopen('form.csv','r'); fputcsv($csv,$ShiftJIS); fclose($csv); ```
回答: csvのサイズが大きくないのであれば以下の処理を行えばいいです。 基本的には以下の順 1. form.csvをreadでオープン 2. form.csvの内容を全てメモリー(変数)に読み込む 3. form.csvをクローズ 4. form.csvをwriteでオープン 5. form.csvにヘッダー行を書込む 6. form.csvにに2で読み込んだものをすべて書き込む 7. form.csvをクローズ 単純にするなら 1. file_get_contents()でform.csvをメモリー(変数)に読み込む 2. form.csvをwriteでオープン 3. form.csvにヘッダー行を書込む 4. form.csvにに1でメモリー(変数)に読み込んだものをすべて書き込む 5. form.csvをクローズ