びっくり。PHPでの文字列の連結でダブルクオーテーションを使うと...


この記事を書いた理由

現在、PHP教材を執筆していて初めて知ったことがあったので残しておこうと思います。

PHPでの文字列+変数の出力について

例えば、変数$name"yamada"という文字列を代入してHello!yamadaという文字列を出力するケースを試します。

sample.php
<?php

$name = "yamada";

echo $name;

//実行結果:yamada


echo "Hello!".$name;

//実行結果:Hello!yamada


echo 'Hello!$name';

//実行結果:Hello$name


echo "Hello!$name";

//実行結果:Hello!yamada


echo "Hello"$name;

//実行結果:エラー

?>

上記の実行結果を見ていただければわかると思いますが、
文字列+変数の出力の方法で一般的に知られているのは2つ目の

<?php

$name = "yamada";

echo "Hello".$name;

?>

だと思います。

echo "文字列".(変数);

の形ですね。

ですが、もう一つ、4番目の方法でも出力可能ということを初めて知りました。

<?php

$name = "yamada";

echo "Hello$name";

?>

下記のようにダブルクオーテーションで囲むと連結するために必要な.がなくても出力されるんですね。
びっくり。

echo "文字列(変数)";

ちなみにシングルクオーテーションの場合は上手く出力できません。

調べてみると、シングルクオーテーションとダブルクオーテーションには実が違いがあリました。

シングルクオーテーション(' '):完全にそのまま利用する
ダブルクオーテーション(" "):評価できるものは評価する

上記の通り、ダブルクオーテーションの場合は$name変数であると評価されて変数の値が適用されたと言えます。

いやー、びっくりしました。

まとめ

PHPで文字列を出力するには2つの方法がありました。

ただ、一般的に多く使われているのは

echo "文字列".(変数);

こちらですので、こちらを使うのが良いかなと思います。
僕もこちらを普段から使っています。

とまあ、こんな感じで記事は以上です。

最後まで読んでいただきありがとうございました!!