PHP 中一個美元符號後面跟上一個變數名稱,即表示一個變數。變數的名稱是對大小寫敏感的。
變數名與 PHP 中其它的標簽一樣遵循相同的規則。一個有效的變數名由字母或者下劃線開頭,後面跟上任意數量的字母,數字,或者下劃線。按照正常的正則表達式,它將被表述為:'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'
註: 字母為 a-z,A-Z,ASCII 字元從 127 到 255 (0x7f-0xff)。
<?php $var = "Bob"; $Var = "Joe"; echo "$var, $Var"; // outputs "Bob, Joe" $4site = 'not yet'; // invalid; starts with a number $_4site = 'not yet'; // valid; starts with an underscore $t澌te = 'mansikka'; // valid; '洄 is ASCII 228. ?> |
PHP 3 中,變數總是傳值設值。那也就是說,當你將一個表達式的值賦予一個變數時,整個原始表達式的值被設值到目標變數。這意味著,例如,當一個變數的值賦予另外一個變數時,改變其中一個變數的值,將不會影響到另外一個變數。有關這種型別的設值操作,請參閱 表達式 一章。
PHP 4 提供了另外一種方式給變數設值: 傳位址設值。這意味著新的變數簡單的引用(換言之,“成為其別名” 或者 “指向”)了原始變數。更動新的變數將影響到原始變數,反之亦然。這同樣意味著其中沒有執行複制操作;因而,這種設值操作更加快速。儘管如此,任何提速的操作只有在緊密循環或者大陣列或者對象 才可能被注意到。
使用傳位址設值,簡單地追加一個(&)符號到將要設值的變數前(源變數)。例如,下列代碼片斷兩次輸出‘My name is Bob’:
<?php $foo = 'Bob'; // Assign the value 'Bob' to $foo $bar = &$foo; // Reference $foo via $bar. $bar = "My name is $bar"; // Alter $bar... echo $bar; echo $foo; // $foo is altered too. ?> |
需要注意的是只有命名變數才可以傳位址設值,這一點非常重要。