http://jp.php.net/manual/ja/language.variables.variable.php
マニュアルでは
>ドル記号を二つ使用することにより、 変数の名前として使用することができます
とか書かれていますが、この説明はちょっとわかりづらいです。
前${1}という気持ち悪い変数名を作成できるという話をしましたが、言ってしまえばあれも一種の可変変数です(正確には違うが)
最も簡単な例はこうなります。
variable.php
1
2
3
4
5
|
$abc='xyz';
$a='abc';
print($$a); //xyzが表示
|
ただ、$$aという書き方は分かり難い上に$aが配列だった場合に困ったことになったりするので、通常は${$a}のように{}で括ります。
variable2.php
1
2
3
4
5
|
$abc='xyz';
$a='abc';
print(${$a}); //xyzが表示
|
配列の要素を呼ぶときの、$a[$b]といった書き方と殆ど同じようなものです。
$$a→${$a}→${'abc'}→$abc
$a[$b]→$a['abc']
PHPの場合、配列が非常に充実しているので、可変変数を使う機会は滅多にないと思います。
http://blog.promob.jp/fri/2009/04/php-5.html
等で挙げられている例の場合、
$str[1] = "さいたー さいたー";
とすれば済む話ですから。
http://d.hatena.ne.jp/web_program/20090318/1237352866
こちらではSmarty的に配列を変数に代入していますが、………extract()というものがあってだな(略
ちなみにSmarty自体はどうやっているかというと、コンパイル時に{$name}を<?php echo $this->_tpl_vars['name']; ?>に置換しているだけでした。
PR
トラックバック
トラックバックURL:
コメント
無題
extract関数知りませんでした。となると、本当に可変変数を使う場面が思いつかないですね。まあ、そういうとこもPHPらしいといえばらしいのですが。
posted by tek_kkoc at
2009/05/14
23:11
[ コメントを修正する ]