PHPのechoとprint
PHPには出力を行う基本的な方法が2つあります。それが、echoとprintです。主に文字列の出力に使用されるechoとprintには、文法やパフォーマンスの面でわずかな違いがあります。この記事では、それらの違いや使用時の注意点について解説します。これらを正しく理解しておくことは、PHP開発者にとっていくつかの利点をもたらすでしょう。
覚えておきましょう! PHPのechoとprintは、文字列だけでなく、数値や配列、オブジェクトなど、さまざまなデータ型の式を文字列として出力することができます。
echoとprintの比較
echoとprintは、PHPにおいてさまざまなデータ型の式を文字列として出力できるという共通点がありますが、わずかな違いも存在します。以下の表は、それらの違いと共通点をまとめたものです。
| 比較項目 | echo |
print |
|---|---|---|
| 使用目的(共通点) | 式を文字列として出力 | 式を文字列として出力 |
| 引数の数(argument) | カンマ(,)で区切られた複数の引数を同時に出力可能 |
カンマ(,)で区切られた複数の引数を同時に出力できない |
| 戻り値(return) | なし | 常にint(1)を返す |
| 速度(performance) | わずかな違いしかない | わずかな違いしかない |
| 開発者の使用好み | 互換性が高く、引数の数に制限がないため、好んで使われることが多いです | 単一の引数しか使用できないため、好まれません |
echoとprintの比較項目別の事例
echoとprintの違いを比較項目ごとに事例で見ていきます。
引数の数(argument)
| 比較項目 | echo |
print |
|---|---|---|
| 引数の数(argument) | カンマ(,)で区切られた複数の引数を同時に出力可能 |
カンマ(,)で区切られた複数の引数を同時に出力できない |
echoの式では、カンマ(,)で区切られた複数の引数を同時に出力できます
$name = 'John';
$age = 25;
echo 'My name is ', $name, ' and I am ', $age, ' years old.';
// 出力: 'My name is John and I am 25 years old.'
printの式では、カンマ(,)で区切られた複数の引数を同時に出力できません。
$name = 'John';
$age = 25;
print 'My name is ', $name, ' and I am ', $age, ' years old.';
// Parse error: syntax error, unexpected ','
echoやprintで複数引数を使わず、文字列連結演算子であるString Operators(.)を使ってつなげれば、どちらも正常に動作します。
$name = 'John';
$age = 25;
print 'My name is ' . $name . ' and I am ' . $age . ' years old.';
// 出力: 'My name is John and I am 25 years old.'
echo 'My name is ' . $name . ' and I am ' . $age . ' years old.';
// 出力: 'My name is John and I am 25 years old.'
ちょっと注意! printは複数の変数を同時に出力できないという意味ではありません。あくまで、複数の引数を使えないという意味です。
戻り値(return)
| 比較項目 | echo |
print |
|---|---|---|
| 戻り値(return) | なし | 常にint(1)を返す |
echoは戻り値を持たないため、変数に代入しようとするとエラーが発生します。
$result = echo 'Hello, World!';
// Parse error: syntax error, unexpected 'echo' (T_ECHO)
// パースエラー:構文エラー、予期しない 'echo'(T_ECHO)
// 解析エラー:echoは戻り値を持ちません。
printは出力した文字列の長さを戻り値として返すため、変数に代入して使用できます。
$result = print('Hello, World!');
var_dump($result); // int(1)
速度(performance)
$start = microtime(true);
for ($i = 0; $i < 100000; $i++) {
echo 'Hello, world!';
}
$end = microtime(true);
$echo_time = $end - $start;
$start = microtime(true);
for ($i = 0; $i < 100000; $i++) {
print 'Hello, world!';
}
$end = microtime(true);
$print_time = $end - $start;
echo "echo_time: $echo_time\n";
echo "print_time: $print_time\n";
出力される結果は、実行するAMPやハードウェアなど環境によって異なる場合があります。あくまで参考資料としてご利用ください。
// 1番目の結果
// 2番目の結果
// 3番目の結果
echo_time: 0.013507127761841
print_time: 0.012176036834717
// 2番目の結果
echo_time: 0.0065100193023682
print_time: 0.0032229423522949
// 3番目の結果
echo_time: 0.0094029903411865
print_time: 0.0085339546203613
この結果を見ると、echoとprintの違いはほとんどありません。PHPにおいて、echoとprintはどちらも画面にデータを出力するためのキーワードですが、戻り値の有無、引数の数、速度においてわずかな差異があります。
ちょっと注意! echoとprintの速度差が大きいと思わないでください。
上記の例は極端な環境での違いです。実際には、echoとprintを比較しても、人が体感できるほどの速度差はほとんどありません。
echoとprintの違いを理解する重要性
- 柔軟な出力:
echoとprintを使い分けることで、多様な出力ニーズに柔軟に対応できます。echoは複数の値を同時に出力したり、HTMLタグと組み合わせて使うなど、さまざまな出力形式をサポートしています。 - パフォーマンスの最適化:
echoとprintは性能差がわずかで、一般的な状況ではパフォーマンスに大きな影響を与えません。しかし、パフォーマンス最適化のために出力文を選択する際の選択肢があることは、開発者にとって有益です。 - 開発スタイルの選択:開発者は自身のコーディングスタイルや好みに応じて、
echoとprintを使い分けることができます。それぞれの出力文は異なる文法を持っているため、開発者は自分に合った方法でコードを書くことが可能です。 - 多様なPHPコードベースの理解:PHPコードベースを読み解く際に、
echoとprintの違いを知っていると、他の開発者のコードを理解しやすくなります。これはチーム開発やオープンソースプロジェクトに参加する際に役立ちます。
このような理由から、PHPのechoとprintの違いを理解することは、PHP開発者にとって利点となります。
多くのPHP開発者は、互換性が高く、引数の数に制限がないechoをより好んで使用します。