文字列をダブルクオーテーションで囲んで定義した場合やヒアドキュメントでは、文字列の中に変数を記述すると変数に格納されている値で文字列の中の変数を置き換えます。
具体的に例で考えていみましょう。
$name = ‘高橋’;
echo “こんにちは。$name さん”;
この例では文字列の中に変数「name」が記述されています。変数「name」には「高橋」という文字列が格納されているため、この文字列を出力するときには「こんにちは。高橋 さん」と変数が変数に格納されている値に置き換わって出力されます。このような処理を変数展開といいます。
変数展開をする場合は単に文字列中に記述するだけでいいのですが、変数が記述された位置の後ろにアルファベットが続く場合などどこまでが変数名なのか区別できない場合があります。
$colorname = ‘red’;
echo “frame is $colornamecolor”;
上記では変数「colornamecolor」を変数展開しようとしてしまいます。このように変数がどこまでなのか判別しにくい場合や、配列変数などを使う場合には変数名の部分を{}で囲んで記述します。
$colorname = ‘red’;
echo “frame is ${colorname}color”;
なおシングルクオーテーションで囲んだ文字列の中で変数を記述しても変数展開は行われません。
※変数については「変数」を参照してください。