章 8.各類變數

目錄
基本知識
已預設好的變數
變數的有效範圍
用變數來調用變數
外部變數

基本知識

所有 PHP 的變數前面都有一個 "$" 符號, 後面跟著變數的名字。 注意變數名稱是分大小寫的。

Variable names follow the same rules as other labels in PHP. A valid variable name starts with a letter or underscore, followed by any number of letters, numbers, or underscores. As a regular expression, it would be expressed thus: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'

備注: For our purposes here, a letter is a-z, A-Z, and the ASCII characters from 127 through 255 (0x7f-0xff).

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

在 PHP3 的時期, 指定給變數的都是值, 例如把一行表達式指定給變數的話, 變數所儲存的將是表達式計算出來的值。 它的引申意義是如果你把某變數指定給另一個變數後, 改變其中一個的內容並不會影響另外的一個。 想進一步瞭解這種指定變數方法, 請看 表達式一節。

PHP4 則提供了另一種指定變數的方法: 變數參照. 意思是新變數只是參照本來的變數中的值。 (換個說法, 新的變數只是本來的變數的"別名", 也可說新變數是舊變數的"指標") 無論改變哪一個變數, 改動都同時反映在另一個變數中。 由於舊變數的值並沒有被抄到新變數中, 所以這種指定變數的方法執行時會快一點, 但也只是一點而已。 只有在指定大型的陣列、物件或是在大量的迴圈操作中才會看出效益來。

作參照指定的方式是在被參照的變數(舊變數)前加上個(&) 符號。 像下面的示例會連續打出兩句相同的句子:

<?php
$foo = 'Bob';              // Assign the value 'Bob' to $foo
$bar = &$foo;          // Reference $foo via $bar.
$bar = "My name is $bar";  // Alter $bar...
echo $foo;                 // $foo is altered too.
echo $bar;
?>

有一點很重要的是只有真正的變數才可以作為舊變數被參照。

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