有時候使用可變變數名稱是很方便的。就是說,一個變數的變數名可以動態的設定和使用。一個普通的變數透過宣告來設置,例如:
<?php $a = "hello"; ?>
一個可變變數取得了一個普通變數的值作為這個可變變數的變數名稱。在上面的例子中 hello 使用了兩個美元符號($)以後,就可以作為一個可變變數的變數了。例如:
<?php $$a = "world"; ?>
這時,兩個變數都被定義了:$a 的內容是「hello」且 $hello 的內容是「world」。因此,可以表述為:
<?php echo "$a ${$a}"; ?>
以下寫法更準確並且會輸出相同的結果:
<?php echo "$a $hello"; ?>
它們都會輸出:hello world。
要將可變變數用於陣列,必須解決一個模稜兩可的問題。這就是當寫下$$a[1] 時,解析器需要知道是想要$a[1] 作為一個變數呢,還是想要$$a 作為一個變數並取出該變數中索引為[1] 的值。解決此問題的語法是,對第一種情況用 ${$a[1]},對第二種情況用 ${$a}[1]。
<?php $a = 'hello'; $$a = 'world'; echo "$a ${$a}";
以上程式碼的第二句,我們是用兩個美元符號的變量,那麼這裡這個變數就是我們可變變數。從第一句開始詳細解釋:
我們第一句,定義了一個a變量,他的值是hello. 第二句我們是:(由於發現美元符號有特殊含義所以我就解釋寫在註解了。 //在這裡我們的$$a就是可變變數;這裡$$a就表示$($a的值),那這是什麼意思呢?這裡我們的$a的值是不是hello?那麼$$a就表示把$a替換成他的值,那就是$hello。那麼意思是說$hello='world';不知道是否理解? //我們的$a是不是hello為值?那麼$$a,其中的$a是不是hello,如果把$a替換成hello那不就是$hello那麼就表示$hello的值等於了world,這樣懂了吧。
echo "$a ${$a}";
<?php $a = 'hello'; $$a = 'world'; echo "$a $hello"; ?>
以上是php中可變變數 '$$' 使用詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!