揮発性のメモ2

知識をメモ書きしておく

変数内での文字列の置換

<?
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};  // アウト