宝哥软件园

php中引用的用法分析[变量引用、函数引用、对象引用]

编辑:宝哥软件园 来源:互联网 时间:2021-09-07

本文结合实例分析了php中引用的用法。分享给大家参考,如下:

Php引用(即在变量或函数、对象等前面添加符号。)//最重要的是删除被引用的变量,但是被引用的变量不能访问,但是内容不被破坏

PHP中的引号表示不同的名称访问相同的变量内容。

变量引用

PHP引用允许你用两个变量指向相同的内容

?php $ a=' ABC$ b=$ a;echo $ a;//在此输出: ABC echo $ b;//这里输出: ABC $ b=' EFG ';echo $ a;//这里,a美元的值变成了EFG,所以输出EFG回声b美元;//这里输出EFG?函数的地址调用就不多说了。代码如下所示

?phpfunction测试($ a){ $ a=$ a 100;} $ b=1;echo $ b;//输出1测试(b);//这里$b传递给函数的实际上是$b的变量内容所在的内存地址。您可以通过在函数中更改$a的值来更改$b的值。echo“br”;echo $ b;//输出101?需要注意的是,这里测试(1);你会得到一个错误,因为PHP规定传递的引用不能是常量(见错误提示)。

函数的引用返回首先依赖于代码

?phpffunction test(){ static $ b=0;//声明静态变量$ b=$ b 1;echo $ b;返回$ 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()的方式调用函数,其效果是将$b变量的内存地址指向与$a变量相同的位置返回$b)所以改变$a的值也会改变$b的值,所以在执行$a=test()之后;$ a=5;后来,美元的价值变成了5

在这里,静态变量用来让大家理解函数的引用返回。事实上,函数的引用返回主要用于对象

对对象的引用

?phpclass a { var $ abc=' ABC} $ b=新a;$ c=$ b;echo $ B- ABC;//在此输出ABC echo $ c-ABC;//在此输出ABC $ B- ABC=' DEF ';echo $ c-ABC;//这里输出DEF?上面的代码在PHP5中运行。在PHP5中,对象的复制是通过引用实现的。在上表中,$ b=新a;$ c=$ b;事实上,它相当于$ b=新a;$ c=$ b;在PHP5中,默认情况下对象是通过引用调用的,但有时您可能希望创建对象的副本,并希望原始对象的更改不会影响副本。为此,PHP定义了一种称为__clone的特殊方法。

参考的作用

如果程序很大,引用同一个对象的变量很多,使用后想手动清除对象,个人建议使用''方法,然后使用$var=null方法清除。在其他时候,最好使用php5的默认方法。此外,建议在php5中使用“”方法传输大数组,这样毕竟节省了内存空间。

取消引用当您取消引用时,您只需断开变量名和变量内容之间的绑定。这并不意味着可变内容已经被破坏。例如:

?PHP $ a=1;$ b=$ a;联合国索赔集(美元);不是unset $b,只是$ a . function quote test(){ global $ var;//相当于$ var=$ GLOBALS[' var '];未设置(var);//Delete只删除引用,但引用的内容仍然存在。同上,这并不意味着变量内容已经被破坏。} $ var=1;quote test();echo $ var//结果1

不是未设置的$b,只是$ a。

function quote test(){ global $ var;//相当于$ var=$ GLOBALS[' var '];$ var=5;//因为它们都指向相同的内存内容} $ var=1;quote test();echo $ var//结果5 ' '这是引用

全局引用当变量用global $var声明时,它实际上建立了对全局变量的引用。也就是说,这样做是一样的:

?PHP $ var=$ GLOBALS[' var '];这意味着,例如,取消设置$var不会取消设置全局变量。

$this在对象的方法中,$this总是对调用它的对象的引用。

这是另一集。php中指向地址(像指针一样)的功能不是用户自己实现的,而是Zend core实现的。php采用“写时复制”的原则,即指向同一地址的变量或对象除非发生写操作,否则不会被复制。

通俗的谈话

1.如果有以下代码[PHP]$ a=' ABC ';$ b=$ a;[/php]事实上,此时,$a和$b都指向同一个内存地址,而不是$a和$b占用不同的内存

2.如果在上面的代码中添加下面的代码[PHP]$ a=' EFG ';[/php]由于$a和$b指向的内存的数据需要重写一次,Zend core会自动判断为$b自动生成$a的数据副本,并重新申请一块内存进行存储

更多对PHP相关内容感兴趣的读者可以查看本网站的话题:《php常用函数与技巧总结》、《php面向对象程序设计入门教程》、《PHP数学运算技巧总结》、《PHP数组(Array)操作技巧大全》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《php正则表达式用法总结》、《php常见数据库操作技巧汇总》、0103010。

希望本文对PHP编程有所帮助。

更多资讯
游戏推荐
更多+