PHP ��U
前一頁 |  | 下一頁

# 章 12. 各類變數

# 基本知識

所有 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&auml;te = 'mansikka'; // valid; '&auml;' is (Extended) 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. ?>`

需要注意的是只有真正命名的變數才可以用來進行傳址指派。

`<?php $foo = 25; $bar = &$foo; // This is a valid assignment. $bar = &(24 * 7); // Invalid; references an unnamed expression. function test() { return 25; } $bar = &test(); // Invalid. ?>`

前一頁 | 內容 | 下一頁
Type Juggling | 上一層 | 預設的變數