详解PHP变量传值赋值和引用赋值变量销毁
时间:2022-07-27
本文章向大家介绍详解PHP变量传值赋值和引用赋值变量销毁,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本文实例为大家分享了PHP变量传值赋值和引用赋值变量销毁的具体代码,供大家参考,具体内容如下
<?php
$a = 100;
$b = 200;
var_dump($a,$b); //int(100) int(200)
?
php中,上面的代码,变量是怎么存放的呢?
上面的代码变动下,将变量b赋值给变量a,会发生什么?
<?php
$a = 100;
$b = 200;
$a = $b;/*多了这个*/
var_dump($a,$b); //int(200) int(200)
?
问题来了,a = b,那么是将变量a的指针指向了变量b指针所指向的位置?还是变量a指向的位置的值变了?
引用赋值和上面传值赋值不同,引用赋值是两个变量指向一个地方,一旦这样,一改俱改。
怎么引用赋值呢?变量名前加&即可,
a = &
这样赋予变量a的就不仅仅是变量b的值,而是变量b的地址,变量a和变量b共同指向一个地址。
<?php
$a = 100;
$b = 200;
$a = &$b;
var_dump($a,$b); //int(200) int(200)
/*变量b引用赋值给变量a后,ab指向同一个地址,将会一改俱改,如下:*/
$a =500;
var_dump($a,$b);//int(500) int(500) 一改俱改
$b = 700;
var_dump($a,$b);//int(700) int(700) 一改俱改
?
<?php
/*理解下面的话*/
$a = 100;
//变量a赋值int 100 ,100是基础数据类型,不是变量,是存在变量指向位置的
$a = $b;
//变量b的值 赋值 给变量a,变量a,b各有各的指向,执行之后,各是各的。
$a = &$b;
//变量b的值的地址 赋值给变量 a ,变量a,b共用一个地址哦!一改俱改!
?
<?php
/*
php中unset()是用来销毁变量的,但很多时候,unset()只把变量给销毁了,
内存中存放的该变量的值仍然没有销毁,也就是没能达到我们想要的释放内存的效果。
这里可以用 变量=null 的方法来释放其内存
unset也会释放内存的情况
1. 在变量值所占空间超过255字节长的时候,unset(变量)才会释放内存
2. 只有当指向该值的所有变量都被销毁后,地址才会被释放(比如$a,$b都指向该值,仅仅unset($a);是不释放的,$b还是正常存在的)(也要执行1的判断)
*/
$a = 200;
$b = &$a;
unset($a);
var_dump($a,$b); //NULL int(100)
?
上面的代码,执行到unset($a)时候,就是将变量a的指向断开,同时将变量a扔出花名册,从下图可以看出,对变量b是没有影响的。
但是,如果用$a = null;这种方式销毁变量时,将会有如下影响:
<?php
$a = 100;
$b = &$a;
$a = null;
var_dump($a,$b); //NULL NULL
?
这种方式,释放了内存,但是共用一个地址的另一个变量也受到了影响。
看看这两种方式在数组上的应用:
<?php
$aaa = array(
'a'= 1,
'b'= 2
);
unset($aaa['a']);
print_r($aaa); //Array ( [b] = 2 ) ,用unset,数组中这一项不存在了
$bbb = array(
'a'= 1,
'b'= 2
);
$bbb['a'] = null;
print_r($bbb); //Array ( [a] = [b] = 2 ) ,用 = null,数组中这一项还存在,只是为空了
?
以上所述是小编给大家介绍的PHP变量传值赋值和引用赋值变量销毁详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对ZaLou.Cn网站的支持!
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- Android基础--利用ANativeWindow显示视频
- Python如何爬取b站热门视频并导入Excel
- 代码详解——改变控制器的参考速度
- Python爬虫之JS的解析
- Python爬虫之chrome在爬虫中的使用
- Python爬虫之打码平台的使用
- Python爬虫---爬取腾讯动漫全站漫画
- Python爬虫之数据提取-selenium的其它使用方法
- Python爬虫之数据提取-selenium定位获取标签对象并提取数据
- Python爬虫之数据提取-selenium的介绍
- MVC中的引用缺少问题
- 如何用CSS3制作出风琴效果
- ASP.NET Core 进程内与进程外的性能对比
- 伪类和CSS3动画的合并使用
- 一文学会JSR-303 参数校验,真香