概要
挨拶文に名前を埋め込む、エラーメッセージに変数の中身を差し込む、といった 「固定の文字列と、状況に応じて変わる値を組み合わせる」 作業はプログラムを書く時間の多くを占める。PHP にはこのために 2 つの方法が用意されていて、両方を使い分けられるようになるとコードがぐっと読みやすくなる。
1 つ目は . (ドット) 演算子による連結 で、"こんにちは " . $name . " さん" のように文字列と変数をつなげる。2 つ目は ダブルクォート文字列内での変数展開 で、"こんにちは {$name} さん" のように直接書き込める。シングルクォート '...' とダブルクォート "..." の違いはここで、シングルクォートは変数を展開せずそのまま文字として扱う、ダブルクォートは $変数 や \n のようなエスケープシーケンスを解釈する、というルールだ。変数を埋め込みたいかどうか で選ぶのが正しい使い分けになる。
初学者がほぼ全員踏むワナが 日本語の直後で変数が壊れる という現象。"こんにちは$nameさん" と書くと、PHP は $nameさん までを 1 つの変数名と誤読しようとする。これを防ぐのが 波括弧で囲む "{$name}" の形 で、変数の範囲を明示して日本語と分離できる。なお <<<EOT で複数行を書く ヒアドキュメント という記法もあるが、本章では扱わない。
学習目標
.(ドット) で文字列と変数を連結できる- ダブルクォート内で
"{$var}"を使って変数を埋め込める - 日本語が変数の直後に来るときに 波括弧
{}が必要 な理由を言える
ドリル
| no | 内容 |
|---|---|
| 01 | . 連結で名前と挨拶をつなげる |
| 02 | {$var} で日本語の文中に変数を埋め込む |
| 03 | 1 つの文字列に複数の変数を埋め込む |
📝 演習: ドリル 01 — `.` で連結する
問題
変数 $name に "花子" を代入し、. (ドット) で文字列と連結して次のように出力してください。
期待される出力:
こんにちは、花子さんヒント
"こんにちは、" . $name . "さん\n"の形で連結する- このドリルでは
{$name}の書き方は使わない
📝 演習: ドリル 02 — `{$var}` で日本語の中に埋め込む
問題
変数 $name に "太郎" を代入し、ダブルクォートの中で {$name} を使って次のように出力してください。
期待される出力:
ようこそ太郎さんヒント
- 形は
echo "ようこそ{$name}さん\n"; - 波括弧を外して
"ようこそ$nameさん\n"と書くと、PHP が$nameさんを変数名だと解釈して Warning が出る - 日本語の直後に変数を置くときは必ず
{}を付ける
📝 演習: ドリル 03 — 複数の変数を埋め込む
問題
次の 3 つの変数に値を代入し、ダブルクォート内で {$var} を使って 1 つの文字列にまとめて出力してください。
| 変数名 | 入れる値 |
|---|---|
$name |
"花子" |
$age |
20 |
$city |
"東京" |
期待される出力:
花子さんは20歳で東京に住んでいますヒント
- 1 つの
echoで書く - 形は
echo "{$name}さんは{$age}歳で{$city}に住んでいます\n"; - 日本語の直前・直後はすべて
{}で囲む