PHP 的大括號 {} 在雙引號字串與 heredoc/nowdoc 中扮演關鍵角色,能明確界定變量邊界、實現複雜變量解析,甚至存取字串單一字元。本文透過實例釐清三種常見用法。
當變量名緊鄰其他字元時,大括號讓解析器知道變量名稱結束位置。
$arr = [0 => 123, 'name' => '你好'];
foreach ($arr as $k => $v) {
// 正確:{$arr[$k]} 明確表示陣列元素
echo "select * from blog_blogs where blog_tags like '%{$arr[$k]}%' order by blog_id
";
}
// 錯誤示範:"$arr['name']" 會被視為字面字串
// 正確寫法:
echo "{$arr['name']}"; // 輸出:你好
外層大括號被解析器消耗,內層保留為字面字元。
foreach ($arr as $k => $v) {
// 輸出:select * from ... like '%{123}%' ...
echo "select * from blog_blogs where blog_tags like '%{{$arr[$k]}}%' order by blog_id
";
}
$str{索引} 或 $str[索引]PHP 允許用大括號或中括號直接讀取/修改字串指定位置的字元(0-based)。
$str = 'abcdefg';
echo $str{4}; // 輸出:e (第 5 個字元)
echo $str[4]; // 同樣輸出 e,PHP 7+ 建議用中括號
| 語法 | 用途 | 備註 |
|---|---|---|
{$var} | 界定變量名 | 雙引號/heredoc 中必要 |
{{$var}} | 輸出字面 { 內容 } | 外層被解析,內層保留 |
$str{0} / $str[0] | 字串字元存取 | PHP 7.4+ 棄用大括號語法,建議改用中括號 |
{},提升可讀性並避免解析錯誤。$str[$i],相容未來版本。