文字列の中の変数展開

広告

文字列をダブルクオーテーションで囲んで定義した場合やヒアドキュメントでは、文字列の中に変数を記述すると変数に格納されている値で文字列の中の変数を置き換えます。

具体的な例で考えてみます。

$name = '高橋';
echo "こんにちは。$name さん";

この例では文字列の中に変数「name」が記述されています。変数「name」には「高橋」と言う文字列が格納されているため、この文字列を出力する時には「こんにちは。高橋 さん」と変数が変数に格納されている値に置き換わって出力されます。このような処理を変数展開といいます。

変数展開をする場合は単に文字列中に記述するだけでいいのですが、変数が記述された位置の後ろにアルファベットが続く場合などどこまでが変数名なのか区別できない場合があります。

$colorname = 'red';
echo "frame is $colornamecolor";

上記では変数「colornamecolor」を変数展開しようとしてしまいます。このように変数がどこまでなのか判別しにくい場合や、配列変数などを使う場合には変数名の部分を{}で囲んで記述します。

$colorname = 'red';
echo "frame is ${colorname}color";

なおシングルクオーテーションで囲んだ文字列の中で変数を記述しても変数展開は行われません。

※変数については「変数」を参照して下さい。

サンプルプログラム

では簡単なプログラムで試して見ます。

sample5-1.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>PHPテスト</title>
</head>
<body>

<p>PHPのテストです。</p>

<p>
<?php
$name = '山田';

print "私の名前は${name}です<br />";
print '私の名前は${name}です';
?>
</p>

</body>
</html>

上記のファイルをWWWサーバのドキュメントルート以下に設置しブラウザからアクセスすると次のように表示されます。

文字列の中の変数展開

ダブルクオーテーションで囲んだ文字列の中では変数展開が行われていますが、シングルクオーテーションで囲んだ文字列の中では変数展開が行われないので記載した文字列がそのまま出力されています。

( Written by Tatsuo Ikura )