文字列の連結と展開
テクノロジ系 / hello (PHP の最小単位)
文字列の連結と展開
Lesson 1 / Chapter 6
. (ドット) で文字列をつなげる
<?php $name = "太郎"; echo "こんにちは、" . $name . "さん\n"; ?>
実行結果:
こんにちは、太郎さん
- 文字列
"こんにちは、"と変数$nameと文字列"さん"を.でつないだ - ch05 で使った書き方
ダブルクォート内では変数がそのまま展開される
<?php $name = "太郎"; echo "こんにちは、$name さん\n"; ?>
実行結果:
こんにちは、太郎 さん
- ダブルクォート
"..."の中に書いた$nameは 中身に置き換わる - 連結
.を書かなくて済む - ただし変数の 直後に半角スペースや記号 がないと、どこまでが変数名か分からなくなる
日本語が直後に来ると変数名と誤解される
<?php $name = "太郎"; echo "こんにちは、$nameさん\n"; // ← うまく動かない ?>
- PHP は
$nameさん全体を変数名と思って探そうとする - 結果:
Warning: Undefined variable $nameさんなどのエラー - 日本語は変数名に使えないが、PHP は 空白や記号が来るまでが変数名 とみなす
解決: 波括弧 {} で囲む
<?php
$name = "太郎";
echo "こんにちは、{$name}さん\n";
?>実行結果:
こんにちは、太郎さん
{$name}のように 波括弧で囲む と「ここまでが変数」とハッキリ伝わる- 日本語の直前・直後に変数を置くときは 必ず
{}を付ける - 半角スペースや記号で区切れているなら
{}は省略可
複数の変数も同じように埋め込める
<?php
$name = "花子";
$age = 20;
echo "{$name}さんは{$age}歳です\n";
?>実行結果:
花子さんは20歳です
- 1 つの文字列に複数の
{$var}を入れられる - 連結
.を何度も書くより読みやすい
このチャプターでできるようになること
✅ . で文字列と変数を連結できる
✅ ダブルクォート内で "{$name}" を使って変数を展開できる
✅ 日本語の直前・直後では {} が必要だと分かる
✅ 複数の変数を 1 つの文字列に埋め込める
→ ドリルへ
考えてみよう
既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。
ドリル 01 — . で連結する
問題
変数 $name に "花子" を代入し、. (ドット) で文字列と連結して次のように出力してください。
期待される出力:
こんにちは、花子さん
採点
php scripts/grade.php topics/hello/ch06-strings/drill/01-concat-dot/
ヒント
"こんにちは、" . $name . "さん\n"の形で連結する- このドリルでは
{$name}の書き方は使わない
ドリル 02 — {$var} で日本語の中に埋め込む
問題
変数 $name に "太郎" を代入し、ダブルクォートの中で {$name} を使って次のように出力してください。
期待される出力:
ようこそ太郎さん
採点
php scripts/grade.php topics/hello/ch06-strings/drill/02-expand-brace/
ヒント
- 形は
echo "ようこそ{$name}さん\n"; - 波括弧を外して
"ようこそ$nameさん\n"と書くと、PHP が$nameさんを変数名だと解釈して Warning が出る - 日本語の直後に変数を置くときは必ず
{}を付ける
ドリル 03 — 複数の変数を埋め込む
問題
次の 3 つの変数に値を代入し、ダブルクォート内で {$var} を使って 1 つの文字列にまとめて出力してください。
| 変数名 | 入れる値 |
|---|---|
$name | "花子" |
$age | 20 |
$city | "東京" |
期待される出力:
花子さんは20歳で東京に住んでいます
採点
php scripts/grade.php topics/hello/ch06-strings/drill/03-multiple-expand/
ヒント
- 1 つの
echoで書く - 形は
echo "{$name}さんは{$age}歳で{$city}に住んでいます\n"; - 日本語の直前・直後はすべて
{}で囲む