章 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";      // 輸出 "Bob, Joe"

$4site 'not yet';     // 非法變更名;以數字開頭
$_4site 'not yet';    // 合法變量名;以下劃線開頭
$i站台is 'mansikka';  // 合法變量名;可以用中文
?>

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.
?>