こんにちは!フリーエンジニアのせきです。
PHPで文字列を出力するには、echo、printをよく使用します。
この記事では、
- echoの使い方を知りたい
- printの使い方を知りたい
- echoとprintの違いを知りたい
といった基本的な内容から、応用的な内容に関しても解説していきます。今回はそんな文字列を出力する方法について、わかりやすく解説します!
echoとは
echoは引数に指定した文字列を出力します。カンマ区切りで複数の文字列を指定した場合は、それらの文字列が続けて出力されます。
echo 文字列1[, 文字列2... ]
echoは関数ではないので、引数の文字列を括弧で囲む必要はありません。
戻り値はありません。
echoの使い方
echoを使って、文字列を出力してみます。
<?php echo 'こんにちは。'; echo '<br>'; $name = 'たなか'; echo $name; echo '<br>'; echo 'こんにちは。', $name, 'さん。'; echo '<br>'; $greeting1 = 'おはよう。'; $greeting2 = 'こんにちは。'; echo $greeting1.$greeting2; ?>
こんにちは。 たなか こんにちは。たなかさん。 おはよう。こんにちは。
「echo ‘こんにちは。’;」では引数をひとつ指定しており、その文字列がそのまま出力されています。「echo $name;」のように、引数に変数を指定することもできます。
「echo ‘こんにちは。’, $name, ‘さん。’;」では引数を複数指定しており、それらの文字列が続けて出力されています。「echo $greeting1.$greeting2;」のように、複数の変数を出力することもできます。
改行するには、HTMLの改行タグ<br>を出力します。
<?php echo 'おはよう。'; echo '<br>'; echo 'こんにちは。<br>'; echo 'おはよう。 こんにちは。'; ?>
おはよう。 こんにちは。 おはよう。 こんにちは。
7行目のように引数の中で改行しても、実行結果は改行されません。
ヒアドキュメント
何行にも渡る長い文章を出力する場合、echoで<br>を出力すれば実現できますが、ヒアドキュメントを使用すると、より簡単にわかりやすく書くことができます。
「<<<」がヒアドキュメント開始で、この次に書いた文字が再び出現するまで、すべて出力されます。
<?php $val = "ヒアドキュメント"; $message = <<< EOM {$val}を使用すると<br> 長い文章を<br> 簡単にわかりやすく<br> 書くことができます。 EOM; echo $message; ?>
ヒアドキュメントを使用すると 長い文章を 簡単にわかりやすく 書くことができます。
上の例では「<<<」の後に「EOM」という文字があるので、再び「EOM」という文字が出現するまで出力されます。
「<<<」の後の文字は何でも構いませんが、「EOM」(End Of Message)、「EOD」(End Of Document)などがよく使われます。
printとは
printもechoと同様に、引数に指定した文字列を出力します。文字列を複数指定することはできません。
print 文字列
printも関数ではないので、引数の文字列を括弧で囲む必要はありません。戻り値として、常に1を返します。
printの使い方
printを使って、文字列を出力してみます。
<?php print 'こんにちは。'; print '<br>'; $name = 'たなか'; print $name; print '<br>'; print "こんにちは。 $name さん。"; ?>
こんにちは。 たなか こんにちは。 たなか さん。
指定できる引数はひとつのみですが、文字列を直接指定することも、変数を指定することも可能です。HTMLの改行タグ<br>を出力することで、改行することもできます。
また、printもechoと同様、引数に変数を含む文字列を渡すこともできます。その場合は、変数の前後に半角スペースを入れる、文字列をダブルクォーテーション(””)で囲む必要があるので注意してください。
print_rの使い方
print_rを使うと、引数に渡した変数の値を分かりやすく出力することができます。
<?php $val = 1; print $val; echo '<br>'; print_r ($val); echo '<br>'; $val = 'おはよう。'; print $val; echo '<br>'; print_r ($val); echo '<br>'; $val = ['a', 'b', 'c']; print $val; echo '<br>'; print_r ($val); ?>
1 1 おはよう。 おはよう。 Array Array ( [0] => a [1] => b [2] => c )
「$val = 1;」や「$val = ‘おはよう。’;」のように、数値型や文字列型を引数に指定した場合は、その値がそのまま出力され、printと同じ動きをします。
「$val = [‘a’, ‘b’, ‘c’];」のように配列やオブジェクト型を引数に指定した場合は、キーと要素を表す形式で値が表示され、変数の値が分かりやすく出力されます。
echoとprintの違いとは
動作の違い
同じように文字列を出力するechoとprintですが、動作の違いとして以下のようなものがあります。
1.echoは引数に複数の文字列を指定できるのに対して、printはひとつしか指定できません。
<?php // 「おはよう。こんにちは。」が出力される echo 'おはよう。', 'こんにちは。'; // エラー print 'おはよう。', 'こんにちは。'; ?>
2.echoは戻り値がないのに対して、printは常に1を返します。
<?php // エラー $val = echo 'おはよう。'; echo $val; // 「おはよう。1」が出力される $val = print 'おはよう。'; print $val; ?>
速度の違い
echoとprintに速度面での違いはあるのでしょうか?
echoとprintで、それぞれ100万回ループして出力を行い、速度を秒単位で計測してみました。
<?php $count = 1000000; // echoでの出力 $time_start = microtime(true); for ($i = 0; $i < $count; $i++) { echo $i; } $time = microtime(true) - $time_start; echo '<br>'; echo 'echo:'. $time . ' seconds'; echo '<br>'; // printでの出力 $time_start = microtime(true); for ($i = 0; $i < $count; $i++) { print $i; } $time = microtime(true) - $time_start; echo '<br>'; echo 'print:'. $time . ' seconds'; ?>
実行結果 <1回目> echo:0.14966917037964 seconds print:0.10174894332886 seconds <2回目> echo:0.12797880172729 seconds print:0.10327482223511 seconds <3回目> echo:0.10938191413879 seconds print:0.090833902359009 seconds
printの方が、処理速度が早いことがわかりました!
同じ出力する機能ですが、echoは分類的には「文」になります。そして、printは分類的に「式」になっておりこういった差が速度の違いにもつながっているのではないかと思います。
echoについてもっと詳しく知りたい方へ
echoのさまざまな使い方については、以下の記事にまとめていますので、ぜひ参考にしてくださいね!
まとめ
今回は、echo、printを使って文字列を出力する方法について解説しました。
文字列の出力は非常によく使う機能ですので、使い方や特徴をしっかり覚えましょう。echo、printの使い方について忘れてしまったら、この記事を思い出して下さい!