PHPで文字列内に変数を展開する方法は主に以下の2つです。
1. ダブルクオート (") を使う方法
ダブルクオートで囲んだ文字列の中では、変数を直接展開することができます。
php$name = "Taro";
echo "Hello, $name!"; // 出力: Hello, Taro!
補足
変数名の後に文字列が続く場合、変数名とそれ以外の文字列を区別するために中括弧 {}
を使用することができます。
php$fruit = "apple";
echo "I have one {$fruit}s."; // 出力: I have one apples.
2. ヒアドキュメント (<<<) を使う方法
長い文字列や複数行の文字列を扱う場合に便利です。
ヒアドキュメント内でも変数展開が可能です。
php$name = "Taro";
$text = <<<EOT
Hello, $name!
Welcome to PHP.
EOT;
echo $text;
// 出力:
// Hello, Taro!
// Welcome to PHP.
注意点
- シングルクオート (
') の場合、変数は展開されず、そのまま文字列として扱われます。
php$name = "Taro";
echo 'Hello, $name!'; // 出力: Hello, $name!
- ダブルクオートやヒアドキュメントで展開できるのは、スカラ変数(例:
$nameや$age)や
連想配列のキーに限られます。複雑な表現を展開するには中括弧{}を使用します。
php$data = ['name' => 'Taro'];
echo "Hello, {$data['name']}!"; // 出力: Hello, Taro!
これらを活用すると柔軟に文字列を構築できます!
捕捉:
PHPのヒアドキュメント構文における EOT は、文字列の開始と終了を示す
「識別子」の一例です。
ヒアドキュメントを使うと、複数行の文字列を簡潔に記述でき、変数展開も可能です。
EOT の役割
EOT 自体は特定の意味を持つ予約語ではありませんが、PHPでヒアドキュメントを定義
する際に使われる識別子(任意の文字列)の一例としてよく使われています。
識別子には他の名前も自由に使えます。
基本構文
php$text = <<<EOT
ここに複数行の文字列を書けます。
変数展開も可能です。たとえば、$variable。
EOT;
識別子についてのルール
・識別子は任意の名前に変更可能EOT はよく使われますが、 EOD, TEXT, HTML など、好きな名前にすることができます。
$text = <<<MYTEXT これはヒアドキュメントの例です。
識別子は EOT ではなく MYTEXT を使用しています。
MYTEXT;
・識別子は開始時と終了時に一致させる必要がある
開始と終了で名前が異なるとエラーになります。
$text = <<<START
正しい例です。
START;
// 以下はエラーになります(識別子が一致していない)
$text = <<<START
エラーになる例です。
END;
・終了識別子の行頭には余計な空白を入れない
終了識別子は行の先頭に記述する必要があり、前後に空白やタブを入れるとエラーになります。
正しい例:
$text = <<<EOT
正しい記述。
EOT;
間違った例:
$text = <<<EOT
エラーになる記述。
EOT; // 空白があるためエラー
・クォートは不要
開始および終了識別子にはクォート(' や ")は必要ありません。
ヒアドキュメントの特徴
・変数展開が可能
ヒアドキュメント内の文字列にはダブルクオートと同じように変数が展開されます。
$name = "Taro";
$text = <<<EOT
こんにちは、$name さん!
EOT;
echo $text; // 出力: こんにちは、Taro さん!
・エスケープが不要
ヒアドキュメント内ではダブルクオート (") やシングルクオート (') をエスケープする
必要がありません。
$text = <<<EOT
ダブルクオート (") やシングルクオート (') をそのまま記述できます。
EOT;
echo $text;
EOT は、単に「よく使われる識別子」というだけであり、状況に応じてわかりやすい
名前を選べば良いのです!

