商品レビューゲーム食レポお問い合わせホームプログラミングPHPPHPでファイルに書き込む2つの方法!PHPTwitterFacebookはてブPocketLINEコピー2023.01.13PHPでファイルに書き込む方法について書いています。ファイルに書き込みをする時には、下記の2つの方法があります。・ファイルをfopen関数で開いて書き込む・file_put_contents関数を使うfile_put_contents関数の方が簡単に書き込みを行うことができるのでオススメです。この記事で載せているサンプルコードについては、PHPのバージョン8.1.8を使って検証しています。それでは、確認していきましょう。戻り値おわりにfopen/fwrite/fclose関数で書き込むfopen関数でファイルを開いてから、ファイルに書き込むことができます。ファイルを開いた後はfwrite関数を使って書き込んで、fclose関数でファイルを閉じて処理を終了します。下記のように処理をすることができます。world!!");fclose($file);最初にfopen関数を使ってファイルを開いています。第1引数の「hello.txt」が開くファイルのパスになります。第2引数の”w”がファイルモードになります。ファイルモードは開いたファイルをどう処理するか指定する文字になります。今回は”hello.txt”を上書きモード(“w”)で開いています。上書きモード(“w”)で開くと、対象ファイルの内容が毎回上書きされます。$file変数に開いたファイルのファイルポインタリソースを代入しています。その次の行で、fwrite関数を使って内容を書き込みます。第1引数は取得したファイルポインタリソース、第2引数に書き込みたい内容です。world!!」という文字列を上書きします。最後にfclose関数に、ファイルポインタリソースを渡して処理を終了します。上記のプログラムを実行すると、「hello.txt」ファイルがない場合は新規作成されます。world!!」を上書きして処理を終了します。fwrite関数とfputs関数の違いfwrite関数の代わりに、fputs関数を使って書き込むこともできます。world!!");fclose($file);先ほどのプログラムのfwrite関数をfputs関数に変えてみました。これでも同じように動作します。fputs関数は、fwrite関数のエイリアスなので機能に違いはありません。公式のこちらのドキュメントにエイリアスであることが明記されています。その他のファイルモード(上書き/追記/新規書き込み)について書き込むときのファイルモードをまとめてみました。上書き書き込みモード。ファイルがない場合には作成して、毎回ファイルを上書きする。ファイルがない場合には作成して、追記で書き込みをする。書かれている内容は消えない。ファイルがある場合にはエラーになる。ファイルがない場合のみ新規でファイルを作成して書き込みを行う。使うのは、上書きするための「w」と、現状のファイル内容に追記していく「a」になるかと思います。errorが発生します。/Users/xxx/writeFile.php公式のfopen関数の記事にまとめられているので参照してみてください。改行したいとき改行したい時には、改行コード(“\n”)を書き込む内容に含めるようにします。下記のように改行することができます。world!!");fclose($file);まず、fopen関数で、「hello.txt」ファイルを上書きモード(“w”)で開いています。fwrite関数に渡している書き込む内容に改行コード(“\n”)を含めて改行しています。このように、ダブルクォーテーションで囲んだ文字列に改行コードを含めることで、任意の場所で改行されて出力されます。シングルクォーテーションで囲んだ場合には改行コードが効かないので注意してください。実際に出力したファイルを確認すると、このようになります。world!!改行コードの箇所で、改行されたことが確認できました。配列の内容を書き込みたい配列の内容を書き込みたい場合は、foreach関数でループして出力すると良いです。下記のようにして書き込むことができます。"{$text}\n");}fclose($file);最初に文字列の配列として、$texts変数を作成しました。その後にfopen関数で、書き込みたいファイルを上書きモードで開いて、$file変数にファイルポインタリソースを取得しています。foreach文で配列の内容がある間ループして、書き込み処理を行なっています。ループの中でしている処理は、fwrite関数でファイルに書き込んでいます。最後にfclose関数でファイルを閉じて、処理を終了しています。ファイルを参照すると、下記のように配列の内容が書き込まれているのが確認できました。こんにちは今日は晴れていますさようならfile_put_contents関数で書き込むfile_put_contents関数を使うことで、簡単にファイルに書き込むことができます。公式ドキュメントのこちらに書いていますが、fopen関数・fwrite関数・fclose関数を続けて使って、ファイルに書き込むのと同じとのことです。下記のように使うことができます。world!!!");上記の1行で、file_put_contents関数を使って、ファイルに文字列を書き込んでいます。第1引数に書き込みたいファイルを指定して、第2引数に書き込みたい文字列を指定します。world!!!」文字列を書き込みました。ファイルがない場合は作成されて内容が書き込まれます。file_put_contents関数では、何も指定がない場合には上書きモードで書き込まれます。追記モードで書きたいfile_put_contents関数を使って、追記モードで書き込みたいときには第3引数を使います。下記のように第3引数を指定して、実行すると追記モードで書き込まれます。FILE_APPEND);第3引数にはフラグを指定します。今回はFILE_APPENDを指定しているので、追記されるようになりました。他に指定できるフラグは?第3引数に指定できるフラグは3つあります。第1引数のファイルパスをインクルードディレクトリから探す。第1引数のファイルパスが既に存在する場合に、第2引数の内容を追記する。書き込み処理中に、ファイルの排他ロックを確保する。FILE_APPENDとLOCK_EXがよく使われそうです。排他ロックをすることで、ファイルに書き込み終わるまでは、他のユーザーは書き込めなくなります。複数のフラグを一緒に使いたいときには、論理演算子(|)を使って、下記のように指定します。LOCK_EX);書き込みデータに配列を指定できるfile_put_contents関数では書き込むデータに配列を指定することもできます。下記のように指定することが可能です。'banana']);第2引数に配列を指定しています。このようにすると、第2引数の配列の内容が、ひとつずつファイルに書き込まれます。今回のように指定した場合には、下記のように書き込まれます。applegrapebanana引数と戻り値まとめfile_put_contents関数の引数と戻り値をまとめてみます。引数file_put_contents関数に指定できる引数です。・第1引数:必須の引数。データを書き込み先のファイルパス。・第2引数:必須の引数。書き込むデータを指定する、文字列と配列とストリームリソースを指定することができる。・第3引数:フラグを指定して、書き込むときの挙動を変えることができる。戻り値file_put_contents関数はファイルに書き込まれたバイト数を返してくれます。書き込みに失敗した場合にはfalseが返ってきます。おわりに今回はPHPでファイルに書き込むための2つの方法について紹介しました。基本的にはfile_put_contents関数を使った方が、fclose関数での閉じ忘れなどが発生しないのでいいのではないかなと思います。ループなどで処理した内容を出力したい場合には、文字列として変数に出力内容を保持しておいて、最後にfile_put_contents関数で書き込むと良いです。独学に限界を感じたら、オンラインで学んでみよう!本当にわからない場合は、知っている人に聞くと近道になります。・PHP/Laravelのおすすめプログラミングスクール5選!PHP/Laravelのおすすめプログラミングスクール5選!PHPやLaravelが学べるプログラミングスクールを5つ選んで比較してみました。総合的にみると、Freeksがサブスク型で始められて、就職支援まで行ってくれるので良さそうでした!PHP/Laravelが学べるプログラミングスクール5選ゲス...codelikes.com2022.10.15PHPプログラミングシェアするTwitterFacebookはてブPocketLINEコピーyasuakiをフォローするyasuakiコードライクC#C#で文字列を結合する方法!文字列結合サンプル3選!C#で文字列を結合する方法について書いています。C#で文字列を結合するときには、下記の方法で結合することができます。・+演算子を使う・Concatメソッドを使う・Joinメソッドを使う(配列の文字列を結合)載せているコードについては、.Ne...PHPPHPのbreakの使い方!サンプル4つ!(ループを抜ける)PHPのbreakの使い方について書いています。最初にbreakについて解説して、その後に下記のことについて書きました。・breakをforeachで使う・breakを深い階層で使ったとき・breakとcontinueの違い載せているコード...PHPPHPで文字列を含むか検索する5つの方法!PHPで特定の文字列を含むか検索する方法について書いています。下記の関数を使って、特定文字列が文字列に含まれるか検索することが可能です。・strpos関数・mb_strpos関数・strstr関数・mb_strstr関数・preg_matc...Vue.js【現役エンジニアが選定】Vue.jsの学習におすすめの本4選!今回はVue.jsの学習におすすめな本を4つ紹介しています。学習に本が必要かも考えてみたので確認してみてください。Vue.jsの学習に本が必要?Vue.jsはJavaScriptでWebアプリケーションのフロントエンドを開発するときに使われ...Python【Python入門】真理値(bool)とは?解説と変換についてPythonの真理値(論理値/真偽値)について書いています。真理値について解説した後に、他の値からbool関数を使って、bool型にどう変換されるか動作を確認してみました。載せているサンプルコードはPythonのバージョン3.11.0で動作...プログラミングC言語の学習におすすめ本4選!【現役エンジニア選定】C言語の学習におすすめの本を4つ紹介します。最初にC言語について簡単に説明して、その後におすすめの本を紹介しました。最後に、C言語を「どの本で学ぶのが良いか」の考察をまとめていますので、確認してみてください。yasuaki筆者のC言語歴は、...PHP【PHP入門】比較演算子の使い方!サンプルコード7選!PHPの比較演算子の使い方について書いています。それぞれの比較演算子について、サンプルコードを用意して動作を確認してみました。載せているサンプルコードについては、PHPのバージョン8.1.8を使って検証しています。公式サイトのこちらの記事で...PHPPHPで乱数を取得する方法!(mt_rand/rand)PHPで乱数(ランダムな値)を取得する方法について書いています。乱数を取得するには、下記の関数を使うことができます。・mt_rand・rand2つの関数を解説した後に、違いについて書いています。コメントをキャンセルメールアドレスが公開されることはありません。名前メールサイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。Δプロフィールyasuaki福岡でフリーランスをやってます。業界歴13年になりました、SESで働くことがほとんどです。なんでもやってますが、Webが得意です。このブログではプログラミング技術の内容を中心に、たまに商品レビューとかを書いています。配列のまとめ要素を追加する要素を削除する配列を結合する要素を含むか確認する要素数を数える配列の値を展開するPHP/Laravelの学習におすすめの本を選定!・PHPの学習におすすめの本6選!【現役エンジニアが選定】PHPの学習におすすめの本6選!PHPの学習におすすめの本を6つ紹介しています。Laravel・CakePHP・SymfonyなどのWebフレームワークやWordPressなどに使われているPHP。フレームワークの内部のコードや、使用されているシステムのコードを理解するた...codelikes.com2022.08.04・Laravelの学習におすすめの本3選!【現役エンジニアが選定】Laravelの学習におすすめの本3選!(本が必要?)今回はLaravelの学習にオススメの本を3つ紹介しています。学習するにあたって本が必要か考えてみました。Techpit前半はPHPのみでEvernote風メモアプリケーションを開発し、後半は同じものをLaravelで開発する。フレームワークを使用しない場合の開発と、Laravelのメリットを実際に開発することで体感。開発を通じて、簡単なアプリケーションの作り方やSQLの書き方、dockerの使用方法などを学ぶ。商品レビューゲーム食レポお問い合わせホーム検索トップサイドバータイトルとURLをコピーしました。