# 變量傳值方式
[TOC]
首先,何為變量傳值,所謂變量傳值就是將一個變量賦值給另外一個變量
## 值傳遞(拷貝傳值)
值傳遞又稱拷貝傳值,就是將一個變量的值復制一個給另外一個變量。此時二個變量的值相同,但是此時的二個變量又是互相獨立的存在,操作其中任何一個變量,另外一個變量都不會受到其影響。
在PHP中,**字符串型、整型、浮點型、布爾型、NULL、數組**,默認使用的是拷貝傳值方式。
```
<?php
$a = 100;
$b = $a;
$a = 300;
echo $a,$b;
# 結果:a300,b100,他們是互相獨立的存在,互相不會影響
```
## 引用傳遞
引用傳遞又稱為地址傳遞,就是將一個數據的數據空間地址拷貝一個傳遞給另一個變量,此時二個變量的數據空間地址都指向一個地址,改變其中一個值另外一個值也會受到影響而改變。如果需要將值傳遞改變成引用傳遞,要在變量前面加上一個`&`符號,有此符號那么就是說明他就是引用傳遞。
在PHP中**資源**和**對象**默認是引用傳遞。在我們**海量傳值**的時候,**引用傳遞效率高于值傳遞**。
>[danger] 注意:最重要就是當 unset 一個引用,只是斷開了變量名和變量內容之間的綁定。這并不意味著變量內容被銷毀了
```
<?php
$a = 100;
$b = &$a;
$a = 1000;
echo $a,$b;
# 結果:a1000,b1000
$a = 100;
$b = &$a;
$a = 1000;
unset($a);
echo $b;
# 結果為:b1000,最重要就是當 unset 一個引用,只是斷開了變量名和變量內容之間的綁定。這并不意味著變量內容被銷毀了
```
## 值傳遞與引用傳遞的區別
一個是把自己復制一份給另外一個,改變其中任何一個都不會影響另外一個。而引用傳遞,是連同數據空間地址都給另外一個,此時二個互相操作都會影響另外一個。沒有&那么他就是值傳遞,引用傳遞必須使用`&`
- 基礎
- 安裝PHP
- 語言基礎
- 變量
- 變量操作
- 超全局數組變量
- 變量作用域
- 變量傳值方式
- 常量
- 數據類型
- 運算符
- 流程控制
- 文件包含
- 錯誤處理
- 字符串操作
- 數組
- 函數
- 進階
- 面向對象
- 提高
- TP
- 安裝項目
- 框架基礎知識
- 命令創建模塊
- URL生命周期
- 路由操作
- Request請求類
- 參數綁定
- 依賴注入
- 模板操作
- 查詢操作
- 添加操作
- laravel
- ☆目錄結構
- CSRF攻擊
- ☆路由
- ☆控制器
- ☆請求類
- ☆視圖
- ☆模板繼承
- ☆表單驗證
- ☆DB類
- ☆模型
- ☆數據庫遷移
- 類型、修飾、索引
- ☆數據填充
- ☆數據分頁
- ☆session處理
- ☆中間件
- ☆緩存操作
- ☆文件上傳
- ☆接口操作
- ☆擴展插件
- restful
- 工作
- 工作記錄
- QQ登錄
- 新浪登錄
- 微信登錄
- sphinx搜索
- 數據庫
- MySQL
- ☆數據庫操作
- ☆數據表操作
- ☆數據的操作
- 待修改
- 優化
- 存儲引擎選擇
- 列表類型選擇
- 范式
- 慢日志查詢
- 精準時間記錄查詢
- 計劃任務 explain
- 索引
- 索與事務
- 查詢緩存
- 存儲過程
- 觸發器
- 分區
- 分表
- sphinx
- 讀寫分離
- 搜索優化
- 網站靜態化
- Memcache
- Mongodb
- Readis
- php使用redis
- 服務器
- Linux
- 目錄結構
- 常用命令
- VIM編輯器
- 用戶與用戶組
- 權限管理
- 運行級別
- 網絡模式
- ssh
- 軟件安裝
- 計劃任務
- Ubuntu
- 編譯PHP7.3
- 編譯MySQL
- 編譯Nginx
- apache虛擬機配置
- 安裝composer
- Nginx
- Git