ch06 8章中 6章目

ch06 — 文字列の連結と展開

スライドで見る

この章を AI と学ぶ

💬 AI に聞く質問例 3 件
  1. 「ch06 — 文字列の連結と展開」のつまずきやすいポイントを、初学者向けに3つ教えてください

    ChatGPT Claude Gemini

  2. 「ch06 — 文字列の連結と展開」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    ChatGPT Claude Gemini

  3. 「ch06 — 文字列の連結と展開」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    ChatGPT Claude Gemini

概要

挨拶文に名前を埋め込む、エラーメッセージに変数の中身を差し込む、といった 「固定の文字列と、状況に応じて変わる値を組み合わせる」 作業はプログラムを書く時間の多くを占める。PHP にはこのために 2 つの方法が用意されていて、両方を使い分けられるようになるとコードがぐっと読みやすくなる。

1 つ目は . (ドット) 演算子による連結 で、"こんにちは " . $name . " さん" のように文字列と変数をつなげる。2 つ目は ダブルクォート文字列内での変数展開 で、"こんにちは {$name} さん" のように直接書き込める。シングルクォート '...' とダブルクォート "..." の違いはここで、シングルクォートは変数を展開せずそのまま文字として扱う、ダブルクォートは $変数\n のようなエスケープシーケンスを解釈する、というルールだ。変数を埋め込みたいかどうか で選ぶのが正しい使い分けになる。

初学者がほぼ全員踏むワナが 日本語の直後で変数が壊れる という現象。"こんにちは$nameさん" と書くと、PHP は $nameさん までを 1 つの変数名と誤読しようとする。これを防ぐのが 波括弧で囲む "{$name}" の形 で、変数の範囲を明示して日本語と分離できる。なお <<<EOT で複数行を書く ヒアドキュメント という記法もあるが、本章では扱わない。

学習目標

  • . (ドット) で文字列と変数を連結できる
  • ダブルクォート内で "{$var}" を使って変数を埋め込める
  • 日本語が変数の直後に来るときに 波括弧 {} が必要 な理由を言える

ドリル

no 内容
01 . 連結で名前と挨拶をつなげる
02 {$var} で日本語の文中に変数を埋め込む
03 1 つの文字列に複数の変数を埋め込む

解説スライド 全 7 枚

右の ボタン キー(またはスワイプ)で次のスライドに進めます。 下の「縦表示」を開くと全スライドを一気に読めます。

  1. 文字列の連結と展開

    Lesson 1 / Chapter 6

  2. . (ドット) で文字列をつなげる

    <?php
    $name = "太郎";
    echo "こんにちは、" . $name . "さん\n";
    ?>

    実行結果:

    こんにちは、太郎さん
    • 文字列 "こんにちは、" と変数 $name と文字列 "さん". でつないだ
    • ch05 で使った書き方
  3. ダブルクォート内では変数がそのまま展開される

    <?php
    $name = "太郎";
    echo "こんにちは、$name さん\n";
    ?>

    実行結果:

    こんにちは、太郎 さん
    • ダブルクォート "..." の中に書いた $name中身に置き換わる
    • 連結 . を書かなくて済む
    • ただし変数の 直後に半角スペースや記号 がないと、どこまでが変数名か分からなくなる
  4. 日本語が直後に来ると変数名と誤解される

    <?php
    $name = "太郎";
    echo "こんにちは、$nameさん\n";   // ← うまく動かない
    ?>
    • PHP は $nameさん 全体を変数名と思って探そうとする
    • 結果: Warning: Undefined variable $nameさん などのエラー
    • 日本語は変数名に使えないが、PHP は 空白や記号が来るまでが変数名 とみなす
  5. 解決: 波括弧 {} で囲む

    <?php
    $name = "太郎";
    echo "こんにちは、{$name}さん\n";
    ?>

    実行結果:

    こんにちは、太郎さん
    • {$name} のように 波括弧で囲む と「ここまでが変数」とハッキリ伝わる
    • 日本語の直前・直後に変数を置くときは 必ず {} を付ける
    • 半角スペースや記号で区切れているなら {} は省略可
  6. 複数の変数も同じように埋め込める

    <?php
    $name = "花子";
    $age = 20;
    echo "{$name}さんは{$age}歳です\n";
    ?>

    実行結果:

    花子さんは20歳です
    • 1 つの文字列に複数の {$var} を入れられる
    • 連結 . を何度も書くより読みやすい
  7. このチャプターでできるようになること

    . で文字列と変数を連結できる ✅ ダブルクォート内で "{$name}" を使って変数を展開できる ✅ 日本語の直前・直後では {} が必要だと分かる ✅ 複数の変数を 1 つの文字列に埋め込める

    → ドリルへ

1 / 7
📜 スライドを全部一気に読む(縦表示)

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 つの文字列に埋め込める

→ ドリルへ

この章で取り組む 演習問題の流れ (3ステップ)
  1. 01 ドリル 01 — `.` で連結する README.md starter.php answer.php
  2. 02 ドリル 02 — `{$var}` で日本語の中に埋め込む README.md starter.php answer.php
  3. 03 ドリル 03 — 複数の変数を埋め込む README.md starter.php answer.php

演習問題の詳細

この章の演習問題の内容を読めます。実際に手元で解くには教材リポジトリを clone してください。

ドリル 01 — `.` で連結する

問題

変数 $name"花子" を代入し、. (ドット) で文字列と連結して次のように出力してください。

期待される出力:

こんにちは、花子さん

ヒント

  • "こんにちは、" . $name . "さん\n" の形で連結する
  • このドリルでは {$name} の書き方は使わない

🧪 ブラウザで試す

スライドのコードを写経して ▶ 実行、自分で書いて 📝 採点 で答え合わせ。初回のみ PHP ランタイム読込で数秒かかります。

PHP ランタイム未読込

          

        

ドリル 02 — `{$var}` で日本語の中に埋め込む

問題

変数 $name"太郎" を代入し、ダブルクォートの中で {$name} を使って次のように出力してください。

期待される出力:

ようこそ太郎さん

ヒント

  • 形は echo "ようこそ{$name}さん\n";
  • 波括弧を外して "ようこそ$nameさん\n" と書くと、PHP が $nameさん を変数名だと解釈して Warning が出る
  • 日本語の直後に変数を置くときは必ず {} を付ける

🧪 ブラウザで試す

スライドのコードを写経して ▶ 実行、自分で書いて 📝 採点 で答え合わせ。初回のみ PHP ランタイム読込で数秒かかります。

PHP ランタイム未読込

          

        

ドリル 03 — 複数の変数を埋め込む

問題

次の 3 つの変数に値を代入し、ダブルクォート内で {$var} を使って 1 つの文字列にまとめて出力してください。

変数名 入れる値
$name "花子"
$age 20
$city "東京"

期待される出力:

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

ヒント

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

🧪 ブラウザで試す

スライドのコードを写経して ▶ 実行、自分で書いて 📝 採点 で答え合わせ。初回のみ PHP ランタイム読込で数秒かかります。

PHP ランタイム未読込

          

        

演習問題(3問)

  1. ドリル 01 — `.` で連結する

    README.md starter.php answer.php

  2. ドリル 02 — `{$var}` で日本語の中に埋め込む

    README.md starter.php answer.php

  3. ドリル 03 — 複数の変数を埋め込む

    README.md starter.php answer.php

サイト内で問題文・雛形・解答例を確認できます。実際に手元で解くには教材リポジトリを clone してください。

完了にすると進捗に反映されます