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
をより好んで使用します。