PHP的可變變量名


有時候可變的變量名會給編程帶來很大的方便。也就是說變量名可以被動態的命名和使用。通常變量通過下面這樣的語句來命名 :

1
2
3
<!--?php
$a  'hello' ;
?-->

可變變量名指的是使用一個變量的值作為這個變量的名稱。在上面的例子中,通過使用兩個$符號,你可以把hello設置成一個變量的名稱,就像下面那樣。

1
2
3
<!--?php
$ $a  'world' ;
?-->

通過上面的兩個語句,有兩個變量被定義:變量$a,裝的內容是”hello” 以及變量$hello,裝的內容是 “world”。 於是,下面的語言:

1
2
3
<!--?php
echo  "$a ${$a}" ;
?-->

跟下面的語句的輸出完全一致:

1
2
3
<!--?php
echo  "$a $hello" ;
?-->

它們都輸出:hello world。

廈門php培訓

為了使用數組的可變變量名,你需要解決一個歧義問題。就是,如果你寫$$a[1],解析器需要明白究竟你的意思是要把$a[1]當成一個變量,還是 要把$$a當成變量、[1]指的是這個變量的索引。解決這個歧義問題的語法是:第一種情況使用${$a[1]},第二種情況使用${$a}[1]。

 

類屬性也可以通過可變屬性名來訪問。可變屬性名從產生調用所在的變量的訪問范圍內獲取。例如,如果你的表達式是這樣 的:$foo->$bar,那么運行時將會在本地變量范圍內尋找變量$bar,它的值將會做為$foo對象的一個屬性名。如果$bar是個數組也可 以使用。

 

例1 可變變量名

1
2
3
4
5
6
7
8
9
10
<!--?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" ;
?>

上面的例子將會輸出下面的結果:

1
2
I am bar.
I am bar.

警告

請注意,可變變量名不能用於PHP函數和類里的超級全局數組變量上。變量$this也是一個不能動態取名的特殊變量。

如想了解更多相關教程,建議可以去眾行智慧看看。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM