# PHP 變量
變量是存儲信息的容器:
### 實例
```
<?php
$x=5;
$y=6;
$z=$x+$y;
echo $z;
?>
```
## 類似代數
```
x=5
y=6
z=x+y
```
在代數中我們使用字母(比如 x)來保存值(比如 5)。
從上面的表達式 z=x+y,我們能夠計算出 z 的值是 11。
在 PHP 中,這三個字母被稱為_變量_。
注釋:請把變量視為存儲數據的容器。
## PHP 變量
正如代數,PHP 變量可用于保存值(x=5)和表達式(z=x+y)。
變量的名稱可以很短(比如 x 和 y),也可以取更具描述性的名稱(比如 carname、total_volume)。
### PHP 變量規則:
* 變量以 $ 符號開頭,其后是變量的名稱
* 變量名稱必須以字母或下劃線開頭
* 變量名稱不能以數字開頭
* 變量名稱只能包含字母數字字符和下劃線(A-z、0-9 以及 _)
* 變量名稱對大小寫敏感($y 與 $Y 是兩個不同的變量)
注釋:PHP 變量名稱對大小寫敏感!
## 創建 PHP 變量
PHP 沒有創建變量的命令。
變量會在首次為其賦值時被創建:
### 實例
```
<?php
$txt="Hello world!";
$x=5;
$y=10.5;
?>
```
以上語句執行后,變量 txt 會保存值 Hello world!,變量 x 會保存值 5,變量 y 會保存值 10.5。
注釋:如果您為變量賦的值是文本,請用引號包圍該值。
## PHP 是一門類型松散的語言
在上面的例子中,請注意我們不必告知 PHP 變量的數據類型。
PHP 根據它的值,自動把變量轉換為正確的數據類型。
在諸如 C 和 C++ 以及 Java 之類的語言中,程序員必須在使用變量之前聲明它的名稱和類型。
## PHP 變量作用域
在 PHP 中,可以在腳本的任意位置對變量進行聲明。
變量的作用域指的是變量能夠被引用/使用的那部分腳本。
PHP 有三種不同的變量作用域:
* local(局部)
* global(全局)
* static(靜態)
## Local 和 Global 作用域
函數_之外_聲明的變量擁有 Global 作用域,只能在函數以外進行訪問。
函數_內部_聲明的變量擁有 LOCAL 作用域,只能在函數內部進行訪問。
下面的例子測試了帶有局部和全局作用域的變量:
### 實例
```
<?php
$x=5; // 全局作用域
function myTest() {
$y=10; // 局部作用域
echo "<p>測試函數內部的變量:</p>";
echo "變量 x 是:$x";
echo "<br>";
echo "變量 y 是:$x";
}
myTest();
echo "<p>測試函數之外的變量:</p>";
echo "變量 x 是:$x";
echo "<br>";
echo "變量 y 是:$x";
?>
```
在上例中,有兩個變量 $x 和 $y,以及一個函數 myTest()。$x 是全局變量,因為它是在函數之外聲明的,而 $y 是局部變量,因為它是在函數內聲明的。
如果我們在 myTest() 函數內部輸出兩個變量的值,$y 會輸出在本地聲明的值,但是無法 $x 的值,因為它在函數之外創建。
然后,如果在 myTest() 函數之外輸出兩個變量的值,那么會輸出 $x 的值,但是不會輸出 $y 的值,因為它是局部變量,并且在 myTest() 內部創建。
注釋:您可以在不同的函數中創建名稱相同的局部變量,因為局部變量只能被在其中創建它的函數識別。
## PHP global 關鍵詞
global 關鍵詞用于訪問函數內的全局變量。
要做到這一點,請在(函數內部)變量前面使用 global 關鍵詞:
### 實例
```
<?php
$x=5;
$y=10;
function myTest() {
global $x,$y;
$y=$x+$y;
}
myTest();
echo $y; // 輸出 15
?>
```
PHP 同時在名為 $GLOBALS[index] 的數組中存儲了所有的全局變量。下標存有變量名。這個數組在函數內也可以訪問,并能夠用于直接更新全局變量。
上面的例子可以這樣重寫:
### 實例
```
<?php
$x=5;
$y=10;
function myTest() {
$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
}
myTest();
echo $y; // 輸出 15
?>
```
## PHP static 關鍵詞
通常,當函數完成/執行后,會刪除所有變量。不過,有時我需要不刪除某個局部變量。實現這一點需要更進一步的工作。
要完成這一點,請在您首次聲明變量時使用 _static_ 關鍵詞:
### 實例
```
<?php
function myTest() {
static $x=0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
?>
```
然后,每當函數被調用時,這個變量所存儲的信息都是函數最后一次被調用時所包含的信息。
注釋:該變量仍然是函數的局部變量。
- PHP 基礎
- PHP 簡介
- PHP 安裝
- PHP 語法
- PHP 變量
- PHP 5 echo 和 print 語句
- PHP 數據類型
- PHP 字符串函數
- PHP 常量
- PHP 運算符
- PHP if...else...elseif 語句
- PHP Switch 語句
- PHP while 循環
- PHP for 循環
- PHP 函數
- PHP 數組
- PHP 數組排序
- PHP 全局變量 - 超全局變量
- PHP 魔術變量
- PHP 命名空間(namespace)
- PHP 表單
- PHP 表單處理
- PHP 表單驗證
- PHP 表單驗證 - 必填字段
- PHP 表單驗證 - 驗證 E-mail 和 URL
- PHP 表單驗證 - 完成表單實例
- PHP $_GET 變量
- PHP $_POST 變量
- PHP 高級
- PHP 多維數組
- PHP 日期和時間
- PHP Include 文件
- PHP 文件處理
- PHP 文件打開/讀取/讀取
- PHP 文件創建/寫入
- PHP 文件上傳
- PHP Cookies
- PHP Sessions
- PHP 發送電子郵件
- PHP 安全的電子郵件
- PHP 錯誤處理
- PHP 異常處理
- PHP 過濾器(Filter)
- PHP JSON
- PHP 數據庫
- PHP MySQL 簡介
- PHP 連接 MySQL
- PHP MySQL 創建數據庫
- PHP 創建 MySQL 表
- PHP MySQL 插入數據
- PHP MySQL 插入多條數據
- PHP MySQL 預處理語句
- PHP MySQL 讀取數據
- PHP MySQL Where 子句
- PHP MySQL Order By 關鍵詞
- PHP MySQL Update
- PHP MySQL Delete
- PHP 數據庫 ODBC
- PHP XML
- PHP XML Expat 解析器
- PHP XML DOM
- PHP SimpleXML
- PHP AJAX
- AJAX 簡介
- AJAX XMLHttpRequest
- PHP 和 AJAX 請求
- PHP 和 AJAX XML 實例
- PHP 和 AJAX MySQL 數據庫實例
- PHP 和 AJAX responseXML 實例
- PHP 和 AJAX Live Search
- PHP 和 AJAX RSS 閱讀器
- PHP 和 AJAX 投票
- 免責聲明