欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php符号表,该如何处理

程序员文章站 2022-03-10 10:07:24
...
php符号表
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,只是会将这个指向连接断开,但这个地址中的值仍然存在。。。。。。。php符号表,该如何处理

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

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频