PHP 中的變量用一個美圓符號後面跟變量名來表示。變量名是區分大小寫的。一個有效的變量名由字母或者下劃線開頭,後面跟上任意數量的字母,數字,或者下劃線。$this 是一個特殊的變量,它不能被賦值。PHP 也提供了另一種方式給變量賦值:引用賦值,將一個 & 符號加到將要賦值的變量前(源變量)。php
未初始化的變量具備其類型的默認值 - 布爾類型的變量默認值是 FALSE,整形和浮點型變量默認值是零,字符串型變量默認值是空字符串或者數組變量的默認值是空數組。建議初始化,isset() 語言結構能夠用來檢測一個變量是否已被初始化。html
PHP 提供了大量的預約義變量。數組
任何用於函數內部的變量按缺省狀況將被限制在局部函數範圍內。例如:函數
1 <?php 2 $a = 1; /* global scope */ 3 4 function Test() 5 { 6 echo $a; /* reference to local scope variable */ 7 } 8 9 Test(); 10 ?>
這個腳本不會有任何輸出,由於 echo 語句引用了一個局部版本的變量 $a,並且在這個範圍內,它並無被賦值。。PHP 中全局變量在函數中使用時必須申明爲global。this
1 <?php 2 $a = 1; 3 $b = 2; 4 5 function Sum() 6 { 7 global $a, $b; 8 9 $b = $a + $b; 10 } 11 12 Sum(); 13 echo $b; 14 ?>
以上腳本的輸出將是「3」。在函數中申明瞭全局變量 $a 和 $b,任何變量的全部引用變量都會指向到全局變量。spa
在全局範圍內訪問變量的第二個辦法,是用特殊的 PHP 自定義 $GLOBALS 數組。.net
1 <?php 2 $a = 1; 3 $b = 2; 4 5 function Sum() 6 { 7 $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b']; 8 } 9 10 Sum(); 11 echo $b; 12 ?>
$GLOBALS 是一個關聯數組,每個變量爲一個元素,鍵名對應變量名,值對應變量的內容。$GLOBALS 之因此在全局範圍內存在,是由於 $GLOBALS 是一個超全局變量。code
變量範圍的另外一個重要特性是靜態變量(static variable)。靜態變量僅在局部函數域中存在,但當程序執行離開此做用域時,其值並不丟失。htm
可變變量blog
一個可變變量獲取了一個普通變量的值做爲這個可變變量的變量名。
<?php $a = 'hello'; ?> <?php $$a = 'world'; ?> <?php echo "$a ${$a}"; ?>
兩個變量都被定義了:$a 的內容是「hello」而且 $hello 的內容是「world」。
將可變變量用於數組,必須解決一個模棱兩可的問題。當寫下 $$a[1] 時,解析器須要知道是想要 $a[1] 做爲一個變量呢,仍是想要 $$a 做爲一個變量並取出該變量中索引爲 [1] 的值。解決此問題的語法是,對第一種狀況用 ${$a[1]},對第二種狀況用 ${$a}[1]。