PHP に複数ある文字列リテラルのちがい


今回は PHP に複数用意されている文字列リテラルの各書式の特徴についてご説明してみたいと思います。文字列リテラル書式というのはここではシングルクォート( '' )やダブルクォート( "" )のことを指して言っています。
このあたりは PHP の基本の部分とはなりますが、ふだん一部の書式だけを使っていたりするとなかなか他の書式のことをきちんと学ぶ機会がないので、ふだん PHP を書いている方の中にも「実はあいまいだった」という方もいらっしゃるのではないでしょうか? 本日は私自身の復習の意味も含めて、そのあたりのところのお話ができればと思います。
文字列リテラルとは
まずは定義から。 文字列リテラルとはプログラムコード内の 文字列型のデータを直接表すパーツ を指すことばです。 シングルクォート( '' )やダブルクォート( "" )が多くのプログラミング言語に共通して文字列リテラルを表すために使われています。
PHP の文字列リテラルの書式
PHP 5.3 以降を対象にすると、 PHP には 4 種類の文字列リテラルの書式が存在します。
- シングルクォート
- ダブルクォート
- Heredoc ヒアドキュメント
- Nowdoc ナウドック
それぞれ次のような書式です。
シングルクォート
echo 'You\'re a giraffe.'; // => You're a giraffe.
$n = 6;
echo 'びわ湖の面積は滋賀県の $n 分の 1 です。\n'; // => びわ湖の面積は滋賀県の $n 分の 1 です。\n
ダブルクォート
echo "You're a giraffe."; // => You're a giraffe.
$n = 6;
echo "びわ湖の面積は滋賀県の $n 分の 1 です。\n"; // => びわ湖の面積は滋賀県の 6 分の 1 です。
Heredoc ヒアドキュメント
$subject1 = '湖';
$subject2 = '雲';
$poem = <<
// 湖 や
// 暑さを惜しむ
// 雲 の峰
Nowdoc ナウドック
$subject1 = '湖';
$subject2 = '雲';
$poem = <<<'EOS'
$subject1 や
暑さを惜しむ
{$subject2} の峰
EOS;
echo $poem;
// =>
// $subject1 や
// 暑さを惜しむ
// {$subject2} の峰
各書式の特徴
上記の例はそれぞれの特徴が表れる形で書いています。 まとめると次のような特徴があります。
- シングルクォート: 文字列が そのまま 表示される。文字列の中にシングルクォートを含めたい場合はバックスラッシュでのエスケープが必要。
- ダブルクォート: 文字列中の 特殊文字や変数が変換/展開 された状態で表示される。
- Heredoc ヒアドキュメント: ダブルクォートの複数行版 。 `<<