<? class AAA{ public $x="hoge"; } $a = new AAA; $b = "piyo"; $c = array("fuga",$a); $z = "{$a->x}_${b}_${c[0]}_{$c[1]->x}"; print("$z\n"); // hoge_piyo_fuga_hoge
変数のパースについて
PHP: 文字列 - Manual
基本的には、全体を{ }で囲うのが無難だけど、そのまま書いても認識される。
変数に続けて 英数字や_、[]や-> がくるときは{ }でくくらないと 誤認される。
また、単純な変数の場合は $ の後ろに{ }をつけてもいいけど、クラスとかの場合は $ごと{ }でくくる必要がある
めったにないけど、変数を{ }でくくった文字列 を出力したいときは {{ }} にするといける。
<? $z = "$a->x"; // 合法 $z = "$b"; // 合法 $z = "$c[0]; // 合法 $z = "{$a->x}"; // 合法 $z = "{$b}"; // 合法 $z = "{$c[0]}"; // 合法 $z = "{{$b}}; // {hoge} という文字列を表示したい時用 $z = "${b}; // ギリギリセーフ $z = "${c[0]}; // ギリギリセーフ $z = "$b_"; // アウト(変数を $b でなく $b_ と認識) $z = "${a->x}; // アウト