採点されません。匿名です。 間違えることは学習の一部です。読むだけでもかまいません。

文字列の連結と展開

テクノロジ系 / 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"花子"
$age20
$city"東京"

期待される出力:

花子さんは20歳で東京に住んでいます

採点

php scripts/grade.php topics/hello/ch06-strings/drill/03-multiple-expand/

ヒント

  • 1 つの echo で書く
  • 形は echo "{$name}さんは{$age}歳で{$city}に住んでいます\n";
  • 日本語の直前・直後はすべて {} で囲む