PHPで文字列を表示する場合、echo
とprint
の2つの方法があります。この記事では、echo
とprint
の違いや、使い方を解説します。
echoとprintの違い
PHPには、文字列を出力するための構文が2つあります。echo
とprint
です。
どちらもだいたい同じように使うことができます。
echo '一家に一台グルーガン';
一家に一台グルーガン
print '一家に一台グルーガン';
一家に一台グルーガン
では、何が違うのでしょうか。
echo
は複数の引数を受け付け、それらすべてを出力します。そして、戻り値を返しません。print
は1つの引数のみを受け付けます。そして、戻り値として常に1
を返します。(そして、返された1が利用されることはありません)
//複数の引数を渡す例
echo '一家に一台', 'グルーガン'; //OK
print '一家に一台', 'グルーガン'; //エラー
このようにカンマ,
で区切って複数の文字列を渡せるのはecho
だけです。
どちらを使うかは、まったくの自由なのですが、echo
を使う人のほうが多いような気がします。なぜならecho
は4文字でprint
は5文字だからです(※個人の感想です)。
あと、echo
のほうが戻り値を返さないぶん、若干速度が早いそうです。
以降、echo
の使い方だけを解説します。どうしてもprint
を使いたいあなたは、ここで画面をそっと閉じてください。
無料で利用できるプログラミング学習サービスをお探しならば Code Lesson はいかがでしょうか。プロのエンジニアが監修した学習ロードマップで効率的に学習、AIに質問、最後にクイズで理解度をチェックできます。
echoの基本的な使い方
PHPのecho
は、文字列、変数、および式を出力するために使用されます。以下は、echo
の基本的な使い方の例です。
//テキストを出力する
echo 'こんにちは、世界!'; //こんにちは、世界!
//変数の値を出力する
$str = 'こんにちは、世界!';
echo $str; //こんにちは、世界!
//式の評価結果を出力する
$x = 10;
$y = 20;
echo $x + $y; //30
括弧は必要か
PHPのマニュアルでは、echo
とprint
は関数リファレンス内で解説されています。しかし、これは罠で、echo
とprint
は関数ではなく言語構造です。なので、引数を括弧で括る必要はありません。
ただし、括弧で括っても正常に動作します。
echo ('こんにちは、世界!');
こんにちは、世界!
どういうことかというと、1 + 1
も(1 + 1)
も結果は2
になるのと同じことです。何の意味もない無駄な括弧を付けているだけということになります。今まで、echo
の引数に括弧を付けていたあなたは、無駄なことをしていたんです。反省してください。
文字列の連結(ドット、カンマ)
PHPのecho
構文を使用して、ドット.
またはカンマ,
を使用して複数の文字列を連結して出力することができます。
$name = '金正恩';
$hobby = 'ミサイル開発';
//ドット(.)を使用した文字列の連結
echo 'こんにちは、私の名前は' . $name . 'です。趣味は' . $hobby, 'です。';
//カンマ(,)を使用した文字列の連結
echo 'こんにちは、私の名前は', $name, 'です。趣味は', $hobby, 'です。';
どちらも実行結果は同じですが、処理の工程が違います。
- 複数の文字列を連結して1つの文字列にする。
- 連結した1つの文字列を出力する。
- カンマで区切られた1つめの文字列を出力する。
- 2つめの文字列を出力する。
- 3つめの文字列を出力する。(以下繰り返し)
出力する文字列が短い場合は、どちらを使用しても大差はありません。ただし、出力する文字列が長い場合は、ドットを使用するとメモリを多く消費します。また、処理速度も遅くなります。長い文字列を出力するときはカンマを使いましょう。
シングルクォーテーションとダブルクォーテーション
PHPのecho
構文で、シングルクォーテーション'...'
とダブルクォーテーション"..."
を使用する場合、次のような違いがあります。
変数の展開
シングルクォーテーションを使用する場合、文字列内で変数を展開することができません。例えば、次のようになります。
$name = '金正恩';
echo 'ヤッホー、$nameだよ!'; //ヤッホー、$nameだよ!
echo 'ヤッホー、' . $name . 'だよ!'; //ヤッホー、金正恩だよ!
シングルクォーテーションの中に変数を記述しても、変数名がそのまま出力されてしまいます。
ダブルクォーテーションを使用する場合、文字列内で変数を展開することができます。例えば、次のように使用することができます。
$name = '金正恩';
echo "ヤッホー、{$name}だよ!"; //ヤッホー、金正恩だよ!
変数が展開されて「ヤッホー、金正恩だよ!」と愉快な自己紹介が出力されました。
変数名を波括弧{...}
で括っているのは、変数名の始まりと終わりを明確にするためです。波括弧がないと$nameだよ!
が変数名とみなされてしまい、そんな変数はねえよというエラーが発生します。
というわけで、文字列内に変数を含まないときはシングルクォーテーション'...'
、変数を含むときはダブルクォーテーション"..."
を使いましょう。
クォーテーション in クォーテーション
文字列の中にシングルクォーテーションが含まれる場合、シングルクォーテーションで括るとエラーになります。その場合、文字列中のシングルクォーテーションの前にバックスラッシュ\
をつけてエスケープする必要があります。
echo 'It's a Sony.'; //エラー
echo 'It\'s a Sony.'; //It's a Sony.
また、ダブルクォーテーションを使用して文字列中にダブルクォーテーションを含める場合は、次のように書く必要があります。
echo "<p class="dictator">ヤッホー、金正恩だよ!</p>"; //エラー
echo "<p class=\"dictator\">ヤッホー、金正恩だよ!</p>"; //ヤッホー、金正恩だよ!
エスケープ処理なんてしたくないという反抗期のあなたに、別の方法を教えてあげます。今回だけやで。
echo "It's a Sony."; //It's a Sony.
echo '<p class="dictator">ヤッホー、金正恩だよ!</p>'; //ヤッホー、金正恩だよ!
このように、ダブルクォーテーションで括ればシングルクォーテーションをエスケープしなくてもいいし、シングルクォーテーションで括ればダブルクォーテーションをエスケープしなくてもいいんです。うまく使い分けてください。
改行したい
PHPのecho
で改行するには、以下の方法があります。
ブラウザに出力する場合
ブラウザに出力する場合は、改行タグ<br>
を使用すると改行することができます。
echo 'ヤッホー、金正恩だよ!<br>パパは金正日だよ!';
ヤッホー、金正恩だよ!
パパは金正日だよ!
ターミナルに出力する場合
ターミナルに出力する場合は、改行文字<LF>をあらわすエスケープシーケンス\n
を使います。
echo "ヤッホー、金正恩だよ!\nパパは金正日だよ!";
ヤッホー、金正恩だよ!
パパは金正日だよ!
エスケープシーケンスを展開するにはダブルクォーテーションで括る必要があるのでご注意ください。
これとは別に、PHP_EOL
を使う方法もあります。
echo 'ヤッホー、金正恩だよ!' . PHP_EOL . 'パパは金正日だよ!';
ヤッホー、金正恩だよ!
パパは金正日だよ!
PHP_EOL
は、実行環境に合わせて改行文字を出力してくれる定数です。実行環境がUNIX/Linux/Macならば<LF>(\n
)、Windowsならば<CR><LF>(\r\n
)になります。
配列を表示したい
PHPのecho
で配列を表示しようとして次のようになったことはありませんか。
$fruits = array('りんご', 'みかん', 'ブラックサポテ');
echo $fruits;
Array
アレー?ってなりますよね(つまらない)。
echo
で配列を表示することはできないので、次のようにします。
print_r 関数を使う方法
print_r
関数は、与えられた配列をわかりやすく表示することができます。 print_r
関数は、引数として渡された配列を文字列に変換し、出力します。
$fruits = array('りんご', 'みかん', 'ブラックサポテ');
print_r($fruits);
Array
(
[0] => りんご
[1] => みかん
[2] => ブラックサポテ
)
implode 関数を使う方法
implode
関数は、与えられた配列の要素を区切り文字で連結した文字列を返します。
$fruits = array('りんご', 'みかん', 'ブラックサポテ');
echo implode(', ', $fruits);
りんご, みかん, ブラックサポテ
以上のように、配列を文字列に変換する方法は複数ありますので、状況に応じて適切な方法を選択してください。
echoの省略形
PHPのecho
構文は省略して記述することができ、次のような特徴があります。
<?= 文字列 ?>
は<?php echo 文字列; ?>
と同じ意味を持ちます。<?= 文字列 ?>
は、セミコロン;
を省略することができます。<?
と=
の間にスペースは入りません。- PHP 5.4.0以降では
short_open_tag
設定がOff
でも使えます。
以下は、echo
の省略形を使用した例です。
<html>
<body>
<?php
$name = '金正恩';
?>
<p>ヤッホー、<?= $name ?>だよ!</p>
</body>
</html>
ヤッホー、金正恩だよ!
このように、HTMLの中に変数の値を埋め込むときに使うと便利ですね。
でわでわ
無料で利用できるプログラミング学習サービスをお探しならば Code Lesson はいかがでしょうか。プロのエンジニアが監修した学習ロードマップで効率的に学習、AIに質問、最後にクイズで理解度をチェックできます。
コメント