PHP プログラミング

【PHP】文字列の出力。echo、print、print_r、var_dumpの違い

文字列の出力

言語構造

これから紹介する出力方法の一部が関数ではなく、「言語構造」というものに分類されます。
なので出力方法を紹介する前に「言語構造」について説明します。
「言語構造」とは言語(PHP)を構成する要素で、あらかじめ用意されたものになります。
関数とは少し振る舞いが違うようです。たとえば()無しで呼び出せたり
存在しない変数を参照してもエラーが発生しないなどの違いがあるようです。
ではこれらの前提を踏まえたうえで、各出力方法を説明していきたいと思います。

各出力方法の違い

echoでの出力

「echo」は関数ではなく、「言語構造」と呼ばれるものに分類されます。
戻り値はありません。


// 関数ではないので()が無くても動作します。
echo 'Hello world';

// ()をつけても動作するようにっています。
echo ('Hello world');

// カンマ区切りで複数の引数を渡すことができます。
// 出力結果は、文字列が連結されたものになります。
echo '今日は', 'いい天気', 'ですね。';

// 上記の出力結果は以下の出力結果と同じになります。
echo '今日は' . 'いい天気' . 'ですね。';

// echoは戻り値が無く、式でないため、以下のような使い方はできません
($test_flag) ? echo 'true' : echo 'false';


ポイント

「print」との違いは、複数の引数を指定できる点と戻り値がない点になります。
また、「echo」は戻り値がないため「式」としてみなされません。
なので、三項演算子の中では使えません。

printでの出力

「print」は関数ではなく、「言語構造」と呼ばれるものに分類されます。
戻り値は常に「1」を返します。


// 関数ではないので()が無くても動作します。
print 'Hello world';

// ()をつけても動作するようにっています。
// 複数の引数を指定することは出来ません。
print ('Hello world');

// printは式としてみなされるので、以下のような使い方が可能です。
($test_flag) ? print 'true' : print 'false';


ポイント

「print」の戻り値はどんな結果であろうと「1」を返します。
その為、式としてみなされます。なので、三項演算子の中で使用できます。

print_rでの出力

「print_r」は関数になります。指定した値を出力します。
戻り値は第二引数の指定によって異なります。
「TRUE」の場合、指定した値が戻り値になります。
「FALSE」の場合、「TRUE」が返ります。
また、第二引数に「TRUE」を指定した場合は、
出力自体は行わず、指定した値を戻り値として返します。


// 第二引数を省略した場合(デフォルトの値はFALSE)、指定した値が出力されます。
print_r('Hello world');

// 第二引数にTRUEを指定した場合は、出力結果を返します。
$result = print_r('Hello world', TRUE);

// 出力結果
print_r($result);
Hello world

// 配列の出力
$array = ['りんご', 'メロン', 'みかん'];

// 出力結果
print_r($array);
Array ( [0] => Array ( [0] => りんご [1] => メロン [2] => みかん ) )

// 式としてみなされるので、以下のような使い方が可能です。
($flag) ? print_r('true') : print_r('false');

var_dumpでの出力

「var_dump」は関数になります。
型や値を含む構造化された情報を返します
配列、連想配列、多次元配列なども出力してくれます。
戻り値はありません。


$array[] = ['りんご', 'メロン', 'みかん'];
$array[] = [['トマト', 'キャベツ'],['スイカ']];

// 出力
var_dump($array);

出力結果


array(2) {
  [0]=>
  array(3) {
    [0]=>
    string(9) "りんご"
    [1]=>
    string(9) "メロン"
    [2]=>
    string(9) "みかん"
  }
  [1]=>
  array(2) {
    [0]=>
    array(2) {
      [0]=>
      string(9) "トマト"
      [1]=>
      string(12) "キャベツ"
    }
    [1]=>
    array(1) {
      [0]=>
      string(9) "スイカ"
    }
  }
}


みるはぴ

配列などもそのまま出力してくれるので、データの中身を確認するの最適です。
私は困ったときの「var_dump」と思うぐらい馴染みの深い関数です。

  • この記事を書いた人
  • 最新記事

-PHP, プログラミング

© 2022 みるはぴ.com