php符号表,该如何处理

php中文网
发布: 2016-06-13 12:08:14
原创
2768人浏览过

php符号表

关于符号表,有一些疑问
1、这么理解对不对
(1)符号表是key-value结构,就跟数据库一样。每新建一个变量,就在符号表添加一条记录。
(2)当$a=1时,在符号表添加一条数据,key为a,value为指向内存的地址,假设是0x111222。当$b=$a时,b对应的value值也为0x111222。
2、当$c = & $a 时,会强制进行分离。有些强迫症的问题来了,是谁分离出去?也就是0x111222这个地址是$b的,还是$a/$c的?
3、关于unset($a),网上资料都说是断开指向,怎么断开的?是不是其实就是把符号表中的$a记录删除了?
------解决思路----------------------

   $a = 12;

  $b = $a;

 $c = &$a;

 echo $b."_".$c; //12_12

 $a = 15;

 echo $b."_".$c;//12_15

?>

&为引用变量 or 函数地址等,这个&跟C语言的指针有相似之处,$b=$a;只是把变量a的值赋值给变量b,当变量a发生变化时,变量b不会跟着变化
------解决思路----------------------
感觉这样理解吧:
$b=$a  只是会把a对应的值赋给b,并不会将地址也给b;
$c=&$a 是引用赋值,会将a的地址分离出去给c,也就是说a是啥c就是啥
unset($a), 断开连接,其实就是将$a指向的地址断开,比如你说的0x111222,只是会将这个指向连接断开,但这个地址中的值仍然存在。。。。。。。

可能表达不太清楚
希望能帮到你吧
------解决思路----------------------
1.你的理解算是正确
2.$c = & $a  是会复制一个$b     $c 、 $a指向0x111222
3.unset($a) 只是把$a从symbol_table删除 并把$a的zval  --recount 如果   recount==0 则gc

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号