変更可能な変数名を使用すると便利な場合があります。つまり、変数の変数名を動的に設定して使用することができます。通常の変数は宣言によって設定されます。例:
リーリー変数変数は通常の変数の値を変数変数の変数名として取得します。上記の例では、hello にドル記号 ($) が 2 つ使用されており、可変変数として使用できます。例:
リーリーこのとき、$aの内容が「hello」、$helloの内容が「world」の2つの変数が定義されています。したがって、次のステートメント:
リーリー次のステートメントとまったく同じ結果を出力します:
リーリーそれらはすべて次のように出力されます: hello world.
配列で可変変数を使用するには、あいまいさを解決する必要があります。これは $$a[1] を記述するときに、パーサーは $a[1] を変数として必要とするか、または $$a を変数として必要とするかを知る必要があります。そして変数からインデックス [1] の値を取得します。この問題を解決する構文は、最初のケースでは ${$a[1]} を使用し、2 番目のケースでは ${$a}[1] を使用します。
クラスプロパティには、可変プロパティ名を通じてアクセスすることもできます。変更可能なプロパティ名は呼び出しのスコープ内で解決されます。たとえば、式 $foo->$bar の場合、 $bar はローカル スコープで解析され、その値は $foo のプロパティ名として使用されます。 $barが配列単位の場合も同様です。
中括弧を使用して属性名を明確に区切ることもできます。プロパティが配列内にある場合、プロパティ名に複数の部分が含まれている場合、またはプロパティ名に不正な文字が含まれている場合 (json_decode() や SimpleXML など) に最も役立ちます。
例 #1 変数属性の例
リーリー上記のルーチンは次のように出力します:
リーリー例 #2 変数属性の例
リーリー例 #3 変数属性の例
リーリー上記のルーチンは次のように出力します:
リーリー
抜粋: http://php.net/manual/zh/functions.variable-functions.php