第2章 PHPの基本 / 第4回 模擬試験
次のコードの実行結果として正しいものはどれか。 ```php $price = 100; $str1 = 'Price: $price yen'; $str2 = "Price: $price yen"; print $str1 . " / " . $str2; ```
Price: $price yen / Price: 100 yen
正解
Price: 100 yen / Price: 100 yen
Price: $price yen / Price: $price yen
エラーが発生する
解説
シングルクォート文字列(`'...'`)の中では、変数展開(`$variable`をその値に置き換える処理)が行われず、`$price`という文字がそのまま出力されます。一方、ダブルクォート文字列(`"..."`)の中では変数展開が行われ、`$price`は変数の値(`100`)に置き換わります。
例:
```
$price = 100;
$str1 = 'Price: $price yen';
$str2 = "Price: $price yen";
print $str1 . " / " . $str2;
// 出力: Price: $price yen / Price: 100 yen
```
シングルクォート文字列内で`$`をそのまま出力したい場合は特別なエスケープが不要なのに対し、ダブルクォート文字列内で`$`をリテラルとして出力したい場合は`$price`のようにエスケープが必要になる点も対照的です。
(参照: 独習PHP 第4版 第2章 PHPの基本 2.3.5節 シングルクォート文字列とダブルクォート文字列の違い p.65〜67)