php 变量 unset,在PHP中unset变量
让我们考虑一下功能:
function foo() {
static $bar;
$bar++;
unset($bar);
}
foo(); //static $bar is 1
foo(); //static $bar is 2
该函数编译为:
function name: foo
number of ops: 11
compiled vars: !0 = $bar
line # * op fetch ext return operands
---------------------------------------------------------------------------------
2 0 > EXT_NOP
4 1 EXT_STMT
2 FETCH_W static $0 'bar'
3 ASSIGN_REF !0, $0
5 4 EXT_STMT
5 POST_INC ~1 !0
6 FREE ~1
6 7 EXT_STMT
8 UNSET_VAR !0
7 9 EXT_STMT
10 > RETURN null
每个函数调用foo()之前实际存在一个变量,每次调用时,都会获取一个变量,并将其引用分配给$bar.其实这和以前非常相似:
function foo() {
global $bar;
$bar++;
unset($bar);
}
当您调用unset()时,您只会破坏您创建的引用,而不是基础值.
我没有确认,但我猜这是发生的是这样的:
>存储变量(zval)的底层表示,使其引用计数为1.
>当调用foo()时,符号$bar与此zval关联,其引用计数增加到2,并设置引用标志.
>当未设置被调用时,zval的引用计数减少到1,引用标志可能被清除,符号$bar被删除.
php 变量 unset,在PHP中unset变量相关推荐
- js delete删除对象属性,delete删除不了变量及原型链中的变量
js delete删除对象属性,delete删除不了变量及原型链中的变量 一.delete删除对象属性 function fun(){this.name = 'gg';}var obj = new f ...
- python变量的作用_Python中的变量
Python中的变量是用来表示一个值的标识符.变量代表了计算机内存中的一个地址.变量允许在程序中访问其他对象,调用函数或执行其他运算. 1.变量命名规则 变量是Python中的标识符,它应该遵循标识符 ...
- python中的变量的引用_python中的变量引用小结
python的变量都可以看成是内存中某个对象的引用.(变量指向该内存地址存储的值) 1.python中的可更改对象和不可更改对象 python中的对象可以分为可更改(mutable)对象与不可更改(i ...
- 使用变量_在 Linux 中使用变量 | Linux 中国
让我们来看看所有这些 $ 值可以告诉你什么.-- Sandra Henry-stocker 变量通常看起来像 $var 这样,但它们也有 $1.$*.$? 和 $$ 这种形式.让我们来看看所有这些 $ ...
- java中为什么需要常量和变量的区别_Java中的变量和常量
1.变量(variable) 变量,顾名思义,就是变化的量. 我们可以通过变量来操作存储空间中的数据,变量就是指代这个存储空间,一旦你定义了一个一个变量,那么空间的位置就确定了,虽然空间位置是确定的, ...
- python变量类型函数_python中的变量和数据类型
一.变量定义:变量是计算机内存中的一块区域,存储规定范围内的值,值 可以改变,通俗的说变量就是给数据起个名字. 二.变量命名规则: 1. 变量名由字母.数字.下划线组成 2. 数字不能开头 3. 不可 ...
- Spring PropertyPlaceholderConfigurer Usage - 使用系统变量替换spring配置文件中的变量
spring 中可以在import 的filename中使用变量 <import resource="camel-context-routes.${username}xml" ...
- python保存变量_将python 中的变量保存到本地
如何将python中的变量保存在本地? 将python 的一些代码保存在本地, 特别是一些需要大量运算的结果,例如 机器学习里面的模型,,放在本地,还是比较好用的.下次就可以直接拿出来使用就好. 其实 ...
- java 继承变量_用java中的变量继承
任何人都可以澄清我.这里实例方法被覆盖但变量不被覆盖. 输出为:B 10 class A{ int i=10; public void name(){ System.out.println(" ...
- matlab中怎么查看变量,Matlab 查看内存中的变量,清空屏幕等命令
Matlab 查看内存中的变量,清空屏幕等命令 该文章讲述了Matlab 查看内存中的变量,清空屏幕等命令. 1. 查看内存中的变量 who whos 2. clc 清空屏幕 3. clf 清空当前的 ...
最新文章
- PAT甲级1028 List Sorting:[C++题解]排序,cin和cout会超时
- 第一章:递推与递归 【完结】
- 深度学习pytorch--MNIST数据集
- 前端学习(1427):ajax封装二
- linux认令牌操作错误,验证令牌操作错误
- 垃圾回收算法的实现原理_有关垃圾回收算法工作原理的动画指南
- 《Go 语言程序设计》读书笔记(十)反射
- 【Elasticsearch】Elasticsearch ICU现在可以理解表情符号了!
- mobile webiste 中的css的font-size em及line-height等换算
- sqoop job入门 与sqoop增量导入
- 利用PyInstaller打包exe文件
- 最小二乘法用计算机求经验回归方程,最小二乘法求线性回归方程.doc
- ASP + SQL Server聊天室设计实例
- 高拍仪拍照SDK开发(良田影像S300L|S500L)
- 九型人格:三、The proformer 实干者 - 我若没有成就,就没有人会爱我。
- python中代码注释使用的符号是_Python语句中用于注释代码的符号是
- 深圳服务器托管,影响价格的因素
- c语言求定积分的程序,C语言用六种方法求定积分
- 剧本翻译之SHUFFLE 6月21日
- 高新技术企业认定的申报程序
热门文章
- JAVA写接口傻瓜(%)教程(五)
- How to deploy Odoo 11 on Ubuntu 18.04
- Canu FAQ常见问题
- android壁纸路径/目录
- [zhuan]asp.net程序性能优化的七个方面 (c#(或vb.net)程序改进)
- 浅谈Java内存模型——JVM
- 解决jpa和hibernate的json序列化死循环问题
- Spring BeanFactory和FactoryBean的区别
- synchronized工作原理剖析(一)
- List中根据某个实体的属性去重