$a = "hello";
$b = &$a;
unset($a);
echo $a; //没有值
echo $b; //结果是hellounset $a之后,为什么$b的值还存在?
如果$a变化之后$b也应该随之变化啊?为什么$b没变?
解决方案 »
- 问一个生僻的问题 windows 上的exec 和 session问题
- 一个数组的问题
- 急急急:当你打开一个网站的时候 我想先看到一个提示页面
- PHP+MSSQL一定要连接网络数据库才能连接,郁闷!!
- Fatal error: Cannot re-assign $this in D:\php\function.php on line 40 这个解决方法,知道的请进
- 急问,这样的存储过程该怎么写????
- 刚刚装了php4.3.3,运行程序老是出现warning 和 notice
- 一个比较奇怪的效率问题.
- 如何用正则表达式实现从[URL=xx]xxx [/URL]到<a href=xx>xxx</a>的替换
- 怎样转float为字符串呢?(VC)
- 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