php中关于引用()详解.docxVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
php中关于引用(

php中关于引用()详解php的引用(就是在变量或者函数、对象等前面加上符号)在PHP 中引用的意思是:不同的变量名访问同一个变量内容。与C语言中的指针是有差别的.C语言中的指针里面存储的是变量的内容在内存中存放的地址。变量的引用PHP 的引用允许你用两个变量来指向同一个内容?php$a=ABC;$b =$a;echo $a;//这里输出:ABCecho $b;//这里输出:ABC$b=EFG;echo $a;//这里$a的值变为EFG 所以输出EFGecho $b;//这里输出EFG?函数的传址调用传址调用我就不多说了 下面直接给出代码?phpfunction test($a){$a=$a+100;}$b=1;echo $b;//输出1test($b);//这里$b传递给函数的其实是$b的变量内容所处的内存地址,通过在函数里改变$a的值 就可以改变$b的值了echo br;echo $b;//输出101?要注意的是,在这里test(1);的话就会出错,原因自己去想。函数的引用返回先看代码?phpfunction test(){static $b=0;//申明一个静态变量$b=$b+1;echo $b;return $b;}$a=test();//这条语句会输出 $b的值 为1$a=5;$a=test();//这条语句会输出 $b的值 为2$a=test();//这条语句会输出 $b的值 为3$a=5;$a=test();//这条语句会输出 $b的值 为6?下面解释下:通过这种方式$a=test();得到的其实不是函数的引用返回,这跟普通的函数调用没有区别,至于原因:这是php的规定,php规定通过$a=test(); 方式得到的才是函数的引用返回。至于什么是引用返回呢(PHP手册上说:引用返回用在当想用函数找到引用应该被绑定在哪一个变量上面时。) 用上面的例子来解释就是:$a=test()方式调用函数,只是将函数的值赋给$a而已,而$a做任何改变都不会影响到函数中的$b而通过$a=test()方式调用函数呢, 他的作用是将return $b中的$b变量的内存地址与$a变量的内存地址指向了同一个地方,即产生了相当于这样的效果($a=$b;) 所以改变$a的值也同时改变了$b的值所以在执行了 $a=test(); $a=5; 以后,$b的值变为了5。这里是为了让大家理解函数的引用返回才使用静态变量的,其实函数的引用返回多用在对象中。对象的引用?phpclass a{var $abc=ABC;}$b=new a;$c=$b;echo $b-abc;//这里输出ABCecho $c-abc;//这里输出ABC$b-abc=DEF;echo $c-abc;//这里输出DEF?以上代码是在PHP5中的运行效果,在PHP5中对象的复制是通过引用来实现的。上列中$b=new a; $c=$b; 其实等效于$b=new a; $c=$b;PHP5中默认就是通过引用来调用对象,但有时你可能想建立一个对象的副本,并希望原来的对象的改变不影响到副本 . 为了这样的目的,PHP定义了一个特殊的方法,称为__clone。引用的作用如果程序比较大,引用同一个对象的变量比较多,并且希望用完该对象后手工清除它,个人建议用 方式,然后用$var=null的方式清除. 其它时候还是用php5的默认方式吧. 另外, php5中对于大数组的传递,建议用 方式, 毕竟节省内存空间使用。取消引用当你 unset 一个引用,只是断开了变量名和变量内容之间的绑定。这并不意味着变量内容被销毁了。例如:?php$a = 1;$b = $a;unset($a);?不会 unset $b,只是 $a。global 引用当用 global $var 声明一个变量时实际上建立了一个到全局变量的引用。也就是说和这样做是相同的:?php$var = $GLOBALS[var];?这意味着,例如,unset $var 不会 unset 全局变量。$this 在一个对象的方法中,$this 永远是调用它的对象的引用。小插曲php中对于地址的指向(类似指针)功能不是由用户自己来实现的,是由Zend核心实现的,php中引用采用的是“写时拷贝”的原理,就是除非发生写操作,指向同一个地址的变量或者对象是不会被拷贝的。通俗的讲1: 如果有下面的代码$a=ABC;$b=$a;其实此时 $a与$b都是指向同一内存地址 而并不是$a与$b占用不同的内存2: 如果在上面的代码基础上再加上如下代码$a=EFG;由于$a与$b所指向的内存的数据要重新写一次了,此时Zend核心会自动判断 自动为$b生产一个$a的数据拷贝,重新申请一块内存进行存储。

您可能关注的文档

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档