- 作(zuò)者:admin
- 發表時(shí)間(jiān):2013-07-02 14:17:14
- 來(lái)源:未知
有(yǒu)時(shí)候可(kě)變的變量名會(huì)給編程帶來(lái)很(hěn)大(dà)的方便。也就是說變量名可(kě)以被動态的命名和(hé)使用。通(tōng)常變量通(tōng)過下面這樣的語句來(lái)命名 :
可(kě)變變量名指的是使用一個(gè)變量的值作(zuò)為(wèi)這個(gè)變量的名稱。在上(shàng)面的例子中,通(tōng)過使用兩個(gè)$符号,你(nǐ)可(kě)以把hello設置成一個(gè)變量的名稱,就像下面那(nà)樣。
通(tōng)過上(shàng)面的兩個(gè)語句,有(yǒu)兩個(gè)變量被定義:變量$a,裝的內(nèi)容是”hello” 以及變量$hello,裝的內(nèi)容是 “world”。 于是,下面的語言:
跟下面的語句的輸出完全一緻:
它們都輸出:hello world。
為(wèi)了使用數(shù)組的可(kě)變變量名,你(nǐ)需要解決一個(gè)歧義問題。就是,如果你(nǐ)寫$$a[1],解析器(qì)需要明(míng)白究竟你(nǐ)的意思是要把$a[1]當成一個(gè)變量,還(hái)是要把$$a當成變量、[1]指的是這個(gè)變量的索引。解決這個(gè)歧義問題的語法是:第一種情況使用${$a[1]},第二種情況使用${$a}[1]。
類屬性也可(kě)以通(tōng)過可(kě)變屬性名來(lái)訪問。可(kě)變屬性名從産生(shēng)調用所在的變量的訪問範圍內(nèi)獲取。例如,如果你(nǐ)的表達式是這樣的:$foo->$bar,那(nà)麽運行(xíng)時(shí)将會(huì)在本地變量範圍內(nèi)尋找變量$bar,它的值将會(huì)做(zuò)為(wèi)$foo對象的一個(gè)屬性名。如果$bar是個(gè)數(shù)組也可(kě)以使用。
例1 可(kě)變變量名
$bar . " "; echo $foo->$baz[1] . " "; ?>
上(shàng)面的例子将會(huì)輸出下面的結果:
I am bar.
I am bar.
警告
請(qǐng)注意,可(kě)變變量名不能用于PHP函數(shù)和(hé)類裏的超級全局數(shù)組變量上(shàng)。變量$this也是一個(gè)不能動态取名的特殊變量。