# 变量传值方式
[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