`
- 浏览:
2100565 次
- 性别:
- 来自:
深圳
-
php的引用(就是在变量或者函数、对象等前面加上&符号)
php的引用(就是在变量或者函数、对象等前面加上&符号)在PHP 中引用的意思是:不同的名字访问同一个变量内容.与C语言中的指针是有差别的.C语言中的指针里面存储的是变量的内容在内存中存放的地址变量的引用PHP 的引用允许你用两个变量来指向同一个内容<?$a="ABC";$b =&$a;echo $a;//这里输出:ABCecho $b;//这里输出:ABC$b="EFG";echo $a;//这里$a的值变为EFG 所以输出EFGecho $b;//这里输出EFG?>函数的传址调用传址调用我就不多说了 下面直接给出代码function test(&$a){$a=$a+100;}$b=1;echo $b;//输出1test($b); //这里$b传递给函数的其实是$b的变量内容所处的内存地址,通过在函数里改变$a的值就可以改变$b的值了echo "<br>";echo $b;//输出101要注意的是,在这里test(1);的话就会出错,原因自己去想函数的引用返回先看代码function &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这里是为了让大家理解函数的引用返回才使用静态变量的,其实函数的引用返回多用在对象中对象的引用<?class 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的数据拷贝,重新申请一块内存进行存储http://bbs.phpchina.com/viewthread.php?tid=107122
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
php的引用(就是在变量或者函数、对象等前面加上&符号) //最重要就是 删除引用的变量 ,只是引用的变量访问不了,但是内容并没有销毁 在PHP 中引用的意思是:不同的名字访问同一个变量内容. 变量的引用 PHP 的引用...
该变量名后加上圆括号,就可以执行与其值同名的函数,因此可变函数也称为变量函数。 二、引用函数返回值 引用不仅可以用于普通变量、函数参数,还可以用于函数的返回值,此时只需在函数名前添加&符号。此处需注意,...
php的引用就是在变量或者函数、对象等前面加上&符号,在PHP 中引用的意思是:不同的名字访问同一个变量内容,下面介绍如何使用PHP的引用,需要的朋友可以参考下
php的引用就是在变量或者函数、对象等前面加上&符号,在PHP 中引用的意思是:不同的名字访问同一个变量内容,下面介绍如何使用PHP的引用
php的引用(就是在变量或者函数、对象等前面加上&符号)
php变量前面加&符号是什么意思就不用多说了,大家都在用,就是两个变量同时指向一个地址而已,那么,php函数前面加&符号的意义又是什么呢?下面先上两个演示代码,然后再做解释。 function &chhua() { static $b=...
关于php的引用(就是在变量或者函数、对象等前面加上&符号)的作用,我们先看下面这个程序。复制代码 代码如下:<?php $a = 100; //声明变量a $b = &$a; //声明变量b,引用自变量a echo “$a ”; echo “$b...
php的引用(就是在变量或者函数、对象等前面加上&符号),在PHP 中引用的意思是:不同的名字访问同一个变量内容。与C语言中的指针是有差别的.C语言中的指针里面存储的是变量的内容,在内存中存放的地址。 1.变量的...
经常导致变量覆盖漏洞场景有:$使用不当,extract()函数使用不当,parse_str()函数使用不当,import_request_variables()使用不当,开启了全局变量注册等。 全局变量覆盖 extarct()变量覆盖 遍历初始化变量 ...
变量处理函数库 Vmailmgr 邮件处理函数库 WDDX 函数库 压缩文件函数库 XML 解析函数库 Session 函数库 GNU 记录函数库 FTP 文件传输函数库 MCAL 模块日历存取函数库 第五章 范例程序 访客计数器 用户认证...
变量处理函数库 Vmailmgr 邮件处理函数库 WDDX 函数库 压缩文件函数库 XML 解析函数库 Session 函数库 GNU 记录函数库 FTP 文件传输函数库 MCAL 模块日历存取函数库 第五章 范例程序 访客计数器 用户认证...
变量处理函数库 Vmailmgr 邮件处理函数库 WDDX 函数库 压缩文件函数库 XML 解析函数库 Session 函数库 GNU 记录函数库 FTP 文件传输函数库 MCAL 模块日历存取函数库 第五章 范例程序 访客计数器 用户认证...
php函数主要是掌握函数调用,函数的定义,函数的参数问题,以及在函数中变量的作用域等问题,php的函数使用也是非 常灵活的,比如不用显示说明函数的返回值类型, 所以在函数中可以根据不同情况返回不同类型的值,...
PHP变量 变量命名规则 变量以 $ 符号开始,后面跟着变量的名称 变量名必须以字母或者下划线字符开始 变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ ) 变量名不能包含空格 变量名是区分大小写的 PHP 语句和 ...
PHP的教程可以从多个方面展开,包括基础语法、数据类型、函数、面向对象编程(OOP)、文件操作、数据库连接与操作等。以下是一个简要的PHP教程概述: ... 构造函数(__construct())在对象创建时调用,
与C语言中的指针是有差别的.C语言中的指针里面存储的是变量的内容在内存中存放的地址变量的引用.PHP 的引用允许你用两个变量来指向同一个内容 复制代码 代码如下:$a=”ABC”; $b =&$a; echo $a;//这里输出:ABC ...
而你要将该变量的作用范围限制在该函数之内,使用static语句。 $g_var = 1 ; // 全局范围 function test() { global $g_var; // 这样就可以声明全局变量了 } 更先进一些的是变量的变量表示。请参考PHP手册。这在...
本文实例讲述了PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能。分享给大家供大家参考,具体如下: 这里模拟tp框架模板变量分配与赋值操作。 extract($arr); //extract 的作用:从数组...