Forum und email

可變變數

有時候,可以使用可變變數會令到工作更加方便。也就是就,一個變數的名可以被動態的設定和使用。一個普通的變數是以下列的方法設定:

<?php
$a 
"hello";
?>

一個可變變數是以另一個變數的值作為它的變數名。在上述例子中,只要加兩個 $ 在 hello 的前面就可把它當作是一個變數的名來使用了。即:

<?php
$$a "world";
?>

這時,有兩個變數被定義然後儲存在 PHP 的符號表中:含有 "hello" 的 $a 及含有 "world" 的 $hello。所以,此敘述:

<?php
echo "$a ${$a}";
?>

與下列這句有著同樣的輸出:

<?php
echo "$a $hello";
?>

即,它們都輸出:hello world

為了要在陳列中使用可變變數,您必須首先解決一個模糊的問題。比方說,如果您使用 $$a[1],那剖析器必須知道您是想當 $a[1] 是變數來使用,還是當 $$a 是變數,然後指向那個變數的第 [1] 個索引。解決上述模糊問題的語法是:第一個情況使用 ${$a[1]}、第二個情況使用 ${$a}[1]

Warning

必須留意的是,可變變數是不能使用於 PHP 的 Superglobal 陳列。這表示您不能使用 ${$_GET} 這樣的敘述。如果您真的想使用 superglobals 和舊的 HTTP_*_VARS,您可以嘗試以參照的方式使用。