PHP可變變量名用法實(shí)例
有時(shí)候PHP的可變變量名會(huì)給編程帶來很大的方便。也就是說變量名可以被動(dòng)態(tài)的命名和使用。通常變量通過下面這樣的語句來命名:
- <?php
- $a = 'hello';
- ?>
可變變量名指的是使用一個(gè)變量的值作為這個(gè)變量的名稱。在上面的例子中,通過使用兩個(gè)$符號(hào),你可以把hello設(shè)置成一個(gè)變量的名稱,就像下面那樣。
- <?php
- $$a = 'world';
- ?>
通過上面的兩個(gè)語句,有兩個(gè)變量被定義:變量$a,裝的內(nèi)容是”hello” 以及變量$hello,裝的內(nèi)容是“world”。于是,下面的語言:
- <?php
- echo "$a ${$a}";
- ?>
跟下面的語句的輸出完全一致:
- <?php
- echo "$a $hello";
- ?>
它們都輸出:hello world。
為了使用數(shù)組的可變變量名,你需要解決一個(gè)歧義問題。就是,如果你寫$$a[1],解析器需要明白究竟你的意思是要把$a[1]當(dāng)成一個(gè)變量,還是要把$$a當(dāng)成變量、[1]指的是這個(gè)變量的索引。解決這個(gè)歧義問題的語法是:***種情況使用${$a[1]},第二種情況使用${$a}[1]。
類屬性也可以通過可變屬性名來訪問。可變屬性名從產(chǎn)生調(diào)用所在的變量的訪問范圍內(nèi)獲取。例如,如果你的表達(dá)式是這樣的:$foo->$bar,那么運(yùn)行時(shí)將會(huì)在本地變量范圍內(nèi)尋找變量$bar,它的值將會(huì)做為$foo對(duì)象的一個(gè)屬性名。如果$bar是個(gè)數(shù)組也可以使用。
例1 可變變量名
- <?php
- class foo {
- var $bar = 'I am bar.';
- }
- $foo = new foo();
- $bar = 'bar';
- $baz = array('foo', 'bar', 'baz', 'quux');
- echo $foo->$bar . "\n";
- echo $foo->$baz[1] . "\n";
- ?>
上面的例子將會(huì)輸出下面的結(jié)果:
- I am bar.
- I am bar.
警告
請(qǐng)注意,可變變量名不能用于PHP函數(shù)和類里的超級(jí)全局?jǐn)?shù)組變量上。變量$this也是一個(gè)不能動(dòng)態(tài)取名的特殊變量。
原文鏈接:http://www.aqee.net/2010/11/04/variable-variables/
英文鏈接:http://il2.php.net/language.variables.variable
【編輯推薦】