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

      2021/02/23   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で十分ですが、データ形式やバイト数、配列などをあつかうことになると、ほかの関数も覚えておいたほうがよいでしょう。

WordPressサイト制作&リニューアル・機能開発サービス | アトリエSS


【カテゴリ】 - PHP・データベースetc
【タグ】 -

  関連記事

YouTube Data APIを使って、PHPで『タイトル・動画id・サムネイル画像』などを取得してみる(Search: listリソース)
【WordPressでPHPプログラムを学習シリーズ1】用語:PHP変数・関数・定数を、WPの機能を通して覚える
【PHP】カウントダウン機能に使える?array_reverseで配列要素を逆に,パラメーター挙動&array_flipとの違い
【WordPressカスタムフィールド検索】meta_queryで、シリアライズ値が入ったフィールドを持つ記事をヒットさせるには?
【WP記事取得クエリ・プラグイン無し】お知らせなどに使える、ショートコードで特定カテゴリ記事を表示プログラム
PHP・shuffleやarrayを使った、画像ランダム表示方法~メインビジュアルやバナー・テキストにも利用可能
【WordPress条件分岐】is_singleとis_singularって違うの?→idやスラッグ指定、投稿タイプ指定の面で違いが
【WordPressで覚えよう】PHP「->」(オブジェクト演算子/アロー演算子)・「=>」(ダブルアロー演算子)の違い
侍エンジニア塾ブログにあったPHPコードをシンプルに書いてみる(foreachで配列キーや値取得・continueで空要素スキップ)
【WordPress組み込み関数】is_home()とis_front_page()って同じ?→似てますが、厳密には挙動が異なります
【超危険】WordPressデータベースリビジョンお掃除
【PHP学習】var_dumpで出力するのと、echoで出力するのは、挙動がどのように違うの?