[PHP] 可変変数

可変変数は可変な変数です! なんか変な単語だけど英語でもVariable variablesという名前。

ということでコードを書いてみる。

<?php
$var = "私は変数です。 \n";
$foo = "var";
$bar = "foo";

echo $$foo;

$$$bar = "な、なんだってー!?";
echo $var;
?>

結果

私は変数です。
な、なんだってー!?;

というだけのお話。。

<?php
$foobar2000 = "これは出力できるだろうか?";
$foo = "foo";
$bar = "bar";
echo ${$foo.$bar."2000"};
?>

結果

これは出力できるだろうか?

ということで出力できました。 波括弧の中の変数を展開してくれます。 普通の丸括弧じゃダメ

<?php
$var_FOO = "FOO";
$var_bar = "bar";

class FOO{
  public $class = "class";
  static public $foobar = "foobar!";
  const CONSTANT = "FOO::CONSTANT";

  function __construct(){
    echo "a instance was generated.\n";
  }
  static public function bar(){
    echo "bar! \n";
  }
}
$var_FOO::bar();
$class = new $var_FOO;
${$class->class}->$var_bar();
echo FOO::${strtolower($var_FOO).$var_bar};
?>

結果

bar!
a instance was generated.
bar!
foobar!
  • クラス定義には可変変数は使用できないっぽい。
  • インスタンスの生成時に変数を使用できる。
  • インスタンスへのアクセスに変数や関数を使用できる。

んでも、echo FOO::{CONSTANT} でクラス定数にアクセスしようとしたり、 class $var{} とクラス名の定義に変数を利用しようとすると Syntax Error となる。

Share
関連記事