$a = "hello";
$b = &$a;
unset($a);
echo $a; //没有值
echo $b; //结果是hellounset $a之后,为什么$b的值还存在?
如果$a变化之后$b也应该随之变化啊?为什么$b没变?
解决方案 »
- Breaking on Jscript runtime error –object expected 是怎么回事啊
- php关于取表格内数据值得问题
- php操作session得不到内容值怎么办
- 大家好,在线等待,php转C#代码,希望大家能指点!!!
- 【【【如何查找出某条SQL语句所在的php页面?】】】
- session变量值的丢失
- MVC的最通俗理解
- 问卷调查,如何纪录答卷人的IP ?
- 关于cookie的问题,希望高手指点迷津,谢谢了。
- /usr/bin/php /www/x.php @c /www/x.ini @d 2
- simplexml_load_string()问题,同一段代码,本地和空间里的为什么不一样
- 缓存文件遇到难题了
这里的unset是一个销毁变量的函数,而不是给$a赋空值
unset($a) 跟 $a = ""是两个完全不同的概念,销毁$a 跟$b没什么关系。
你把 unset($a)换成 $a = "" 你再看看结果就知道了。
用var_dump()查看输出结果会更明显一些
与C语言中的指针是有差别的.C语言中的指针里面存储的是变量的内容在内存中存放的地址PHP 的引用允许你用两个变量来指向同一个内容PHP中有时你可能想建立一个对象的副本,并希望原来的对象的改变不影响到副本 。当你 unset 一个引用,只是断开了变量名和变量内容之间的绑定。这并不意味着变量内容被销毁了也就是你unset的是其中1个变量。 另个还存在不变化
//php引用的使用
$a = 123;
$b = &$a; //现在$a又有了一个别名叫$b
$b = 234; //操作$b就相当于操作$a,现在$a = 234
$b = null; //此操作能清空$a和$b
unset($b); //次操作才能取消$b和$a的绑定,取消了变量$b