文字列を出力させる命令 echo と print の違い

シェアする

文字列を出力させる命令として、PHPではechoとprint命令があります。

このecho命令とprint命令は、文字列を表示させるというもので、ほとんど機能に違いは無いのですが、細かくみていくと、異なる点もあるんです。

今回は、PHPの豆知識として、ご紹介したいと思います。

スポンサーリンク



echoはカンマ区切りで複数の文字列を指定できる

例えば、phpファイルに、

echo 'テニスは', '楽しい';

と書いて実行してみましょう。

このように、

テニスは楽しい

と表示されます。

echoはカンマ区切りで複数の文字列を連結できています。

次に、print命令を試してみましょう。

print '錦織圭は', '天才';

すると、下記のようなエラーが出ます。

Parse error: syntax error, unexpected ',' in /Applications/MAMP/htdocs/index.php on line 3

要約すると、’,’ の部分(カンマ)がsyntax errorになっています。

というエラー文です。

syntax errorとは、プログラムの書き方が間違ってますよエラーのことですね。

これは、phpで書かれたプログラムを、コンピューターが理解できない時に起こる構文エラーなんです。

これで、printで書かれた文はカンマ区切りはできない、というのがわかりました。

echoは関数のようには利用できない

次は、変数$xにecho命令を代入してみましょう。

$x = echo '松岡修造は日本一熱い';
 echo $x;

すると、

Parse error: syntax error, unexpected 'echo' (T_ECHO) in /Applications/MAMP/htdocs/index.php on line 2

‘echo’ の部分でsyntax errorが出ます。

echoは関数のようには使えないみたいです。

これをprint文で書き換えてみます。

$x = print '松岡修造は日本一熱い';
 print $x;

すると、

松岡修造は日本一熱い1

上記のように出力されます。

print文ではエラーは起こらず、関数のように利用できましたね。

しかし、何やら、文の末尾に’1’がくっついていますね。

これは、次の項目で確かめますのでここはスルーします。

printは戻り値として常に1を返す

最後にprint文では、戻り値として1を返すというのを確かめます。

var_dump()という、PHPの関数を使って調べてみます。

var_dumpは型や値などの情報を返してくれる便利な関数です。

詳しく知りたい方はこちらをみてみてくださいね。

var_dumpについて詳しく調べる

それでは、変数$xに空の文字を入れ、変数の中身をダンプしてみましょう。

$x = print '';
var_dump($x);

結果は、

int(1)

と出力されました。

int型、つまり整数型の数値「1」が$xの中に入っています。

print命令では、返り値に必ず「1」が返されるのがわかりました。

これで、先ほどみた

松岡修造は日本一熱い1

の「1」が返ってきているのがやっと理解できました。

また、echoは関数のようには扱えないので、当然エラーとなりますね。

まとめ

今まで、printとechoを何気なく使っていましたが、はっきりと違いは分かっていませんでした。

まとめてみたことで、スッキリしましたね。

ちなみに、 echo も print ()をつけてecho(‘値’) 、print(‘値’)のように使えますが、いずれも関数ではないですので気をつけてください。

あくまで、文字列を出力する命令です。

まぁこの二つの命令の違いを知っていたところで、あまり役に立つ機会は少ないかもしれないですが、

僕の体験談で、転職活動中に面接で1度だけechoとprintの違いを聞かれたことがあったんですね。

もちろん、その時は答えれませんでした。(笑)

なので、覚えているともしかしたら役に立つかもしれませんね。

以上、 PHP雑学でした。

スポンサーリンク