Let's create! WordPressサイト制作とメンテ/エラー対応から、PHP/CSS/javascriptプログラミング、動画・音・イラスト等制作まで扱うコラム

【PHP学習】var_dumpで出力するのと、echoで出力するのは、挙動がどのように違うの?

更新: 2024/02/12 1738文字

【PHP学習】var_dumpで出力するのと、echoで出力するのは、挙動がどのように違うの?

今回は、WordPressユーザーなのでPHPを学習してる管理人が、プログラムを作る中で気になった、素朴な疑問についてお伝えします。 文字列とか変数の内容を出すときにvar_dumpしたり、echoしたりしますが、挙動がどのように違うのか?また、配列やprint_rで出したときはどうなるのかなどをチェックしていきます。

文字列のvar_dumpと、echoの違い

こちらがお題のプログラムです。paiza,ioを使用しました。str_replaceを使って、『this is a pen』のthisをpenに置き換えるというプログラムを行ってました。phpマニュアルを参考にしたときにあった、『var_dump』をそのまま書きましたが、『echoだと挙動がどのように違うか?』が気になったので実験しました。

var_dumpで出した場合~形式やバイト数も出る

単語入れ替えをして『pen is a pen.』という文章になったのを、var_dumpで出しました。文章だけではなく『string(13)』というのも出てきました。stringは文字列形式であるということ(intだと数値形式)、(13)はバイト数です。空白、ピリオドも1バイトとしてカウントするので13になります。 var_dumpだと形式やバイト数など詳しいデータがでるので、デバッグにも向いています。

echoで出した場合~単純に処理済の文章だけ

echoした場合は『pen is a pen.』という変換済みの文章が単純に出るだけでした。

配列(Array)のvar_dumpと、echoの違い・またprint_rだとどうなるか

配列(Array)をvar_dumpした場合

配列(Array)をvar_dumpしてみたところです。形式やバイト数のほか、配列の順番みたいなのも出ましたね。

配列(Array)を単純にechoした場合~エラーになるので、ほかの書き方を

配列(Array)を単純にechoすると、エラーというかNotice が出ます。『Array to string conversion(配列が文字列に変換されてるよ!)』という意味です。PHPマニュアルで読むとわかるんですけど、echoは『文字列を出力する』機能なので、配列を直接出すようにはできていないようです。

配列にはいっている文字列を出力したい場合は、単純にechoするのではなく・・ [0]みたいに指定したり・・

文字列が全部でるけど、こういう書き方はちょっとめんどくさいんで(笑)、ループとか使いたいところです。

print_rだと、簡易的にだが情報が出力できる

指定した変数に関する情報を出力する関数・print_rを使っても、配列(Array)の中身が出てきます。こちらはvar_dumpしたときと違って、バイト数やデータ形式などは出てこない、簡易版といえそうです。また・・・

$data = array(“one”,”two”,”three”,”four”); $data2 = print_r($data, true); echo ($data2); みたいに書いても、(単純にechoするとエラーになったけど)echoすることができます。実質、print_rしたものを変数$data2に格納してechoしているだけですが(笑)

あとがき・まとめ

  • var_dumpだとデータ形式やバイト数、配列なども出せる
  • echoだと、単純に文字列の出力で、配列は出ない
  • 配列をechoしたいときは、指定やprint_r組み合わせなどが必要

まとめるとこんな感じでしょうか。通常の利用はechoで十分ですが、データ形式やバイト数、配列などをあつかうことになると、ほかの関数も覚えておいたほうがよいでしょう。


【カテゴリ】- PHP
【タグ】-

関連記事