- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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的数据拷贝,重新申请一块内存进行存储。
您可能关注的文档
- DOS命令的FTP命令操作.docx
- DOS命令大全手册word版.docx
- dos命令配置IP地址.doc
- Ddiyns高一数学典型例题分析:等差数列的前n项和.doc
- DOS整理-参数 - 副本.docx
- delphi中Socket程序发送PChar类型结构体的问题.doc
- DDSZ-1型 配置及价格.doc
- ecshop学习.doc
- EL表达式函数-获取字符串长度、截取字符串.doc
- EXCEL VBA正则表达式学习.docx
- 基于人工智能教育平台的移动应用开发,探讨跨平台兼容性影响因素及优化策略教学研究课题报告.docx
- 高中生物实验:城市热岛效应对城市生态系统服务功能的影响机制教学研究课题报告.docx
- 信息技术行业信息安全法律法规研究及政策建议教学研究课题报告.docx
- 人工智能视角下区域教育评价改革:利益相关者互动与政策支持研究教学研究课题报告.docx
- 6 《垃圾填埋场渗滤液处理与土地资源化利用研究》教学研究课题报告.docx
- 小学音乐与美术教师跨学科协作模式构建:人工智能技术助力教学创新教学研究课题报告.docx
- 《航空航天3D打印技术对航空器装配工艺的创新与效率提升》教学研究课题报告.docx
- 教育扶贫精准化策略研究:人工智能技术在区域教育中的应用与创新教学研究课题报告.docx
- 《区块链技术在电子政务电子档案管理中的数据完整性保障与优化》教学研究课题报告.docx
- 《中医护理情志疗法对癌症患者心理状态和生活质量提升的长期追踪研究》教学研究课题报告.docx
最近下载
- VAV-空调系统运行中的问题分析和改造的研究.pdf VIP
- 液冷盲插快接头发展研究报告 2025.pdf
- 《高速公路基础设施数字化建设数据标准》.pdf VIP
- DB21T 1388-2005 风沙半干旱地区花生节水高产优质栽培技术规程.pdf VIP
- 九江卫生系统招聘2022年考试真题及答案解析六1.docx VIP
- 九江2022年卫生系统招聘考试真题及答案解析一_1.docx VIP
- 2025年榆林能源集团有限公司招聘工作人员笔试真题及答案.docx VIP
- GB_T 18879-2020 滑道通用技术条件.docx VIP
- 鼻出血急救与护理.pptx
- 《医疗机构消防安全管理九项规定》考核试题.pdf VIP
文档评论(0)