一道关于PHP的代码题星期一, 十一月 3. 2008
引用
引用此文章特定的网址
没有引用
回复
回复显示方式
(直线程 | 分线程)
我的猜测,$val是在$data外面临时开辟的内存空间。
循环0: array(a, b, c) $val 引用 $data[0] = a 的地址; 循环1: array(b, b, c) $val = b, 由于$val 引用了$data[0]的地址,所以,$data[0] = b,同时 $val 引用 $data[1] = b 的地址; 循环2: array(b, c, c) 原理同循环1; 执行程序验证了我的结果,但不知道我的解释是否正确,望不吝赐教。:)
blueManta说得很对。
举例说明变量引用(reference): $a = NULL; // 释放变量所占用的内存空间(如果该变量已经存在的话) $a = $b; // $a复制了变量$b的值。这个赋值导致变量$a创建并指向一个新的内存空间($a指向该内存空间所在地址);$a和$b指向不同的内存空间(指向不同的内存空间地址)。对$a的操作不影响$b(除非$b是个对象)。 $a = &$b; // $a成为一个引用(引用类型的变量),直接指向变量$b。$a和$b指向相同的内存空间。通常情况下,对$a的操作等同于对$b进行操作。 文中所述数组$data的完整表达形式如下: $data = array( 0 => 'a', // 内存空间A 1 => 'b', // 内存空间B 2 => 'c', // 内存空间C ); 循环过程: $key = 0; $val = 'a'; // $val复制了变量$data[0]的值。这个赋值导致变量$val创建并指向一个新的内存空间X;$val和$data[0]指向不同的内存空间。 $val = &$data[0]; // $val成为一个引用,直接指向变量$data[0](原始数组第一个单元)。$val和$data[0]指向相同的内存空间A。 $key = 1; $val = 'b'; // 赋值操作导致$val所指向的内存空间的值被改变了;$data[0]指向相同的内存空间,所以$data[0]的值也改变了。 $val = &$data[1]; // $val还是一个引用,不过现在指向变量$data[1](原始数组第二个单元)。$val和$data[1]指向相同的内存空间B。 $key = 2; $val = 'c'; // 赋值操作导致$val所指向的内存空间的值被改变了;$data[1]指向相同的内存空间,所以$data[1]的值也改变了。 $val = &$data[2]; // $val还是一个引用,不过现在指向变量$data[2](原始数组第三个单元)。$val和$data[2]指向相同的内存空间C。 可参考PHP.net网站关于array、foreach和reference三个章节中的相关说明。
我觉得对以下三点有所了解,这个题就很自然很简单了:
1、zend的zval(struct _zval_struct)的定义 2、foreach是复制还是引用 3、PHP的copy on write、change on write和reference counter机制
谢谢关注。
个人生活最近一年基本没有什么变化,工作依旧,没有换过。只是有各种生活琐事,而且也在寻找、考虑个人发展的突破口。这样一来,就觉得可支配的剩余时间就少多了。网络是生活的一部分,但并非必需品,因此更新网站的频率就少多了(虽然我依然一直不时更新“我的百科”网页里面的年鉴部分来记录自己的日常琐事)。 祝你好运。
你好。
搜索TN visa时偶然发现你的网站,内容十分详尽。我在NM,现正在找工作,最近一年在做LAMP和Symfony的开发,不知道你们公司现在是否还在招人?
最近2年半一直在招PHP,不过最近好像刚把招人的广告给下了,可能是因为整体向Java转移的缘故。可以试着投一下简历,但最好PHP/Java俱佳。普通技术水平的话尽量就不要在这里混了,不是别的,不太好混。SellingSource.com。祝你好运
谢谢你的回复。不过,现在几乎所有的公司都在提高门槛,对于刚毕业的学生来说经验却还是原地踏步。所以只要是机会只能尽量尝试,至于技术是否普通,待实践去检验好了。
|
Google the Site最新留言 [留言本]
peisen的留言 2010-03-05 07:44:14 xiaolei的留言 2010-02-13 20:52:26 elmtang的留言 2010-02-06 16:31:00 5yyu的留言 2010-01-17 05:34:03 李泽宇的留言 2010-01-14 23:20:44 最新评论2010-03-13 17:11:56
I received my first loans when
I was 32 and [...]
最新文章
网志文字类别近日个人动态最近在忙些什么: 最近在听些什么: 最近在研究什么: 最近在看些什么: |