php基础——unset细节说明
2020-06-29 04:51
531 查看
unset() 销毁的是变量名
$a = 'hello'; $b = &$a; $b = null; var_dump($a,$b); // null null $a1 = 'hello'; $b1 = $a1; $b1 = null; var_dump($a1,$b1); // 'hello' null $a2 = 'hello'; $b2 = &$a2; unset($b2); var_dump($a2,$b2); // 'hello' Undefined variable: b2 $a3 = 'hello'; $b3 = $a3; unset($b3); var_dump($a3,$b3); // 'hello' Undefined variable: b3
在函数内unset()一个全局变量,则只是局部变量被销毁
代码示例
$a = 100; function test(){ // global $a 表示希望使用全局区的$a // 如果没有全局变量$a,则会先创建全局变量 $a=null global $a; $a = 10; // 此处销毁的是 局部$a unset($a); } test(); // 10 echo $a; // 10
内存图分析
流程分析
1.主栈
$a指向100
2.
test(),调用函数,在栈区新开辟一个新的空间新栈1,入新栈1
3.入栈后执行
global $a,即函数内希望使用一个全局变量
$a
- 如果主栈没有
$a
则会先创建全局变量$a
值为null
,然后全局和局部(主栈和新栈)的变量名$a
指向全局区的null
- 如果有则在新栈1创建
$a变量名
指向全局区100
4.
$a = 10,即新栈1中
$a将全局区的100改为10
5.
unset($a),销毁新栈1中的
$a变量名,其实没有函数调用结束也会销毁
6.函数没写返回值,默认返回null,函数结束,出新栈1,新栈1销毁,新栈1中的数据和与新栈1相关的箭头也都没有了
7.
echo $a,主栈中的
$a仍指向10,输出10
测试代码
$a = 100; function test(){ global $a; $a = 10; echo $a; } unset($a); // 销毁不了? 不是, global $a又在主栈创建了一个$a test(); // 新栈$a-->10 echo $a; // 主栈$a-->10 unset($a); // 销毁主栈$a echo $a; // Notice: Undefined variable: a
如何在函数内部unset()全局变量
代码示例
// var_dump($GLOBALS) 查看所有的全局变量 $a = 100; function test(){ global $a; $a = 10; unset($GLOBALS['a']); echo $a; } //var_dump($GLOBALS); // 测试全局变量$a (即主栈$a) 未销毁 test(); // 新栈$a-->10 echo $a; // Notice: Undefined variable: a 主栈中的$a变量名已经被 unset($GLOBALS['a']) 销毁了 var_dump($GLOBALS); // 测试全局变量$a (即主栈$a) 已销毁
流程分析
1.
unset($GLOBALS['a']),销毁主栈中的
$a,此时新栈中
$a还在指向10
2.函数调用结束,新栈销毁,新栈中
$a自然没了,数据区10不再有变量指向,也销毁
相关文章推荐
- PHP模板引擎 Smarty 程序设计部分 基础说明
- 黑马程序员——零基础学习iOS开发——05 C语言:进制、内存储存细节、类型说明符、位运算、数组
- [php基础]PHP环境变量$_SERVER和系统常量详细说明
- php session详细设置说明 ,以及PHP中session_unset与session_destroy的区别
- php关于使用strpos方法判断字符串中是否存在字符串的一些细节说明
- 微信开发环境配置以及开发基础PHP简单说明
- php面向对象基础概念(属性重载的魔术方法)__get(),__set(),__isset(),__unset()
- php session设置说明 ,PHP中session_unset与session_destroy的区别 (转)
- php笔记02:整型细节说明
- php基础留言板的注意细节(使用txt做简单的数据库)。
- php基础 unset()、isset()、defined()、empty()
- php基础之isset unset和empty
- PHP基础之$_SERVER的详细参数与说明
- 第036+037讲 php变量和基本语法 及整形细节说明
- phpwind代码分析之global.php简单说明(主要学习php基础知识的应用)
- [php基础]PHP.INI配置:Session配置详细说明教程
- PHP安全基础 - 共享主机[整理]
- supesite 7.5基础文件说明
- 【php】PHP中file_get_contents()与file_put_contents()函数细节详解
- 韩天峰博客 php基础知识学习记录