## 變量基礎
PHP 中的變量用一個美元符號后面跟變量名來表示。變量名是**區分大小寫的**。
### 命名規則
變量名與 PHP 中其它的標簽一樣遵循相同的規則。一個有效的變量名由字母或者下劃線開頭,后面跟上任意數量的字母,數字,或者下劃線。
```
<?php
$var = 'Bob';
$Var = 'Joe';
echo "$var, $Var"; // 輸出 "Bob, Joe"
$4site = 'not yet'; // 非法變量名;以數字開頭
$_4site = 'not yet'; // 合法變量名;以下劃線開頭
$i站點is = 'mansikka'; // 合法變量名;可以用中文
?>
```
### 變量賦值
主要存在兩種賦值方式:傳值賦值(默認),引用賦值。
傳值賦值:這意味著,當一個變量的值賦予另外一個變量時,改變其中一個變量的值,將不會影響到另外一個變量。
引用賦值:這意味著新的變量簡單的引用了原始變量。改動新的變量將影響到原始變量,反之亦然。 使用引用賦值,簡單地將一個 `&` 符號加到將要賦值的變量前。
```
<?php
$foo = 'Bob'; // 將 'Bob' 賦給 $foo
$bar = &$foo; // 通過 $bar 引用 $foo
$bar = "My name is $bar"; // 修改 $bar 變量
echo $bar;
echo $foo; // $foo 的值也被修改
?>
```
> **Note:** 只有有名字的變量才可以引用賦值。
### 未初始化變量默認值
雖然在 PHP 中并不需要初始化變量,但對變量進行初始化是個好習慣。未初始化的變量具有其類型的默認值。
* 布爾類型的變量默認值是 FALSE
* 整形和浮點型變量默認值是零
* 字符串型變量默認值是空字符串
* 數組變量的默認值是空數組
```
<?php
// Unset AND unreferenced (no use context) variable; outputs NULL
var_dump($unset_var);
// Boolean usage; outputs 'false'
echo($unset_bool ? "true\n" : "false\n");
// String usage; outputs 'string(3) "abc"'
$unset_str .= 'abc';
var_dump($unset_str);
// Integer usage; outputs 'int(25)'
$unset_int += 25; // 0 + 25 => 25
var_dump($unset_int);
// Float/double usage; outputs 'float(1.25)'
$unset_float += 1.25;
var_dump($unset_float);
// Array usage; outputs array(1) { [3]=> string(3) "def" }
$unset_arr[3] = "def"; // array() + array(3 => "def") => array(3 => "def")
var_dump($unset_arr);
// Outputs: object(stdClass)#1 (1) { ["foo"]=> string(3) "bar" }
$unset_obj->foo = 'bar';
var_dump($unset_obj);
?>
```
函數參考:[和變量有關的函數](http://php.net/manual/zh/ref.var.php)
- 基本語法
- PHP標記
- 指令分隔符
- 從HTML中分離
- 注釋
- 數據類型
- 布爾值
- 整數
- 浮點數
- 字符串
- 數組
- 對象
- 資源
- 空值
- 變量
- 基礎
- 預定義變量
- 變量范圍
- 可變變量
- 常量
- 常量語法
- 魔術常量
- 運算符
- 算術運算符
- 賦值運算符
- 位運算符
- 比較運算符
- 遞增與遞減運算符
- 邏輯運算符
- 字符串運算符
- 數組運算符
- 類型運算符
- 流程控制
- if條件結構
- switch條件結構
- while循環結構
- do-while循環結構
- for循環結構
- foreach循環結構
- 包含文件
- 函數
- 自定義函數
- 可變函數
- 匿名函數
- 遞歸函數
- 類與對象
- 基本概念
- 屬性
- 方法
- 類常量
- 構造函數和析構函數
- 訪問控制
- 繼承
- 抽象類
- 接口
- Trait
- 重載
- 對象遍歷
- 魔術方法
- Final關鍵字
- 命名空間
- 自動加載
- 錯誤處理
- 錯誤顯示
- 錯誤日志
- 錯誤報告
- 自定義錯誤處理
- 異常處理
- 異常處理機制
- 擴展異常處理類
- 字符操作
- 數組操作
- 時間操作
- 表單操作
- GET提交
- POST提交
- 文件上傳
- 會話控制
- COOKIE操作
- SESSION操作
- 文件操作
- 文件屬性
- 讀取文件
- 寫入文件
- 文件管理
- 文件鎖
- 目錄處理
- 路徑處理
- 網絡操作
- HTTP協議
- Socket操作
- CURL操作
- PDO操作
- 介紹
- 連接管理
- 預處理語句
- 事務處理
- 錯誤處理
- 圖像操作
- 正則表達式
- 標準推薦
- 包管理器
- 設計模式
- 常用算法
- 安全防御
- XSS防御
- CSRF防御