PHP - 可変変数

可変変数

通常の変数は、次のような命令でセットします。

<?php
  $a = 'hello'; // 通常の変数
?>
通常の変数

可変変数は、変数名を動的にセットし使用できます。可変変数は、変数の値をとり変数の名前として扱います。上記の例では、hello は、ドル記号を2つ使用することにより、変数の名前として使用することができます。

<?php
  $a  = 'hello'; // 通常の変数
  $$a = 'world'; // 可変変数
  
  echo "$a ${$a}";  // hello world
  echo "$a $hello"; // hello world
?>
通常の変数と可変変数

可変変数を配列で使用する際には、曖昧さの問題を解決する必要があります。つまり、$$a[1]と書いた場合、$a[1] を変数として使用したいのか、$$a を変数とし [1] を変数の添え字としたいのかを、パーサが知る必要があります。この曖昧さを解決するには、前者では ${$a[1]} とし、後者では ${$a}[1] とする構文を用います。

クラスのプロパティには、可変プロパティ名でアクセスすることができます。可変プロパティ名の解決は、呼び出し元のスコープで行われます。例えば $foo->$bar のようにするとローカルスコープで $bar を調べ、その値を $foo のプロパティ名として使います。$bar が配列へのアクセスであっても同じです。

関連記事