当前位置:首页 > 日记 > 正文

PHP参考()各种使用方法的详细解决方案

PHP参考()各种使用方法的详细解决方案
PHP的参考是向变量、函数和对象添加符号。PHP中引用的含义是不同的名称可以访问相同的变量内容。C语言中的指针不同于C语言中的指针,该指针存储在变量的内容中,存储在内存中的地址。

1的参考文献。变量
PHP的引用允许您指向具有两个变量的相同内容。
复制代码代码如下:<
$ =abc;
美元=美元;
$;
$
$ =EFG;
回声$ / /;这里的价值为一个输出EFG EFG
echo $ B; / / EFG输出在这里
>

参考转让2。函数(地址调用)
关于下面的代码,我没怎么说。
复制代码代码如下:< PHP

功能测试(a)
{
$ = $ A + 100;
}
B = 1美元;
1
测试(b);在这里传递给函数的B是变量B内容的内存地址,您可以通过改变函数中的$值来改变b的值。

101
>

重要的是要注意,在这里的测试(1);单词会出错,为什么你认为。
注:以上测试($)和$ B在前面不加符号,但在功能call_user_func_array,如果你想引用的参考,你需要的符号。
复制代码代码如下:< PHP
函数A($ b){
美元+;
}
$=0;
call_user_func_array('a',阵列($ C));
回声$;
1 输出
>
3个参考文献。函数返回
先看代码

复制代码代码如下:< PHP
功能测试()
{
静态$ = 0;声明静态变量
美元= $ + 1;
回声$;
返回$;
}
($ = test);此语句将输出$为1的值。
$ = 5;
($ = test);此语句将输出$为2的值。
($ = test);此语句将输出$为3的值。
$ = 5;
($ = test);此语句将输出$为6的值。
>

在下面的解释下:
通过这种方式,从函数中返回的$()=测试()与普通函数调用不同。原因是:这是PHP的规则。
PHP指定对函数的引用是通过$ =测试()返回的;
引用的返回值是什么(PHP手册说:当你想使用一个函数来寻找一个应该绑定到变量的引用时,引用返回)。

上面的例子解释了这一点。
函数的作用是:将函数的值赋值给$,而$中的任何更改不影响函数中的$ B。
函数通过$ =测试()调用。它的功能是将$ B变量的内存地址放在返回$ B中,并将$变量的内存地址放在同一位置。
这相当于这个效果($ A = $ B),因此更改$的值也会更改$的值,以便执行它。
$ =测试();
$ = 5;
在此之后,B的值被更改为5。

这是让每个人理解函数的引用返回静态变量,并且函数的引用实际返回到对象。

PHP官方的另一个例子:
复制代码如下:这是我们如何使用指针访问内部变量的方式。
< PHP
类人{
私人$data = '嗨';
公共函数获取(){
返回$ >数据;
}

公共函数输出(){
回波数据;
}
}
元=新的健谈者();
$ $ =;
();
美元D =;
();
美元D =;
();
美元D =;
();
>
hihowareyou / / 输出

参考4。物体
复制代码代码如下:< PHP
类{
var;
}
美元=新的;
美元=美元;
在这里输入输出
在这里输入输出
$;
在这里输出
>

上面的代码是在PHP5中的运行效果

在PHP5的对象分配是一个过程的参考。以上$ =新;$c = $;事实上,它相当于$ =新;$c = $;
在PHP5中,默认的是调用对象的引用,但有时你可能需要创建一个对象的副本,并希望原始对象的变化不影响副本。为此,PHP5定义了一种特殊的方法称为__clone。
在PHP 5中,新的自动返回引用,所以我们使用=过时,会有一个水平的e_strict新闻。
在PHP4中,一个对象的分配是一个复制的过程。
例如:$ =新一,新一产生一个匿名的一个对象实例,而$此时是一份匿名对象。同为C = $ B也是一份$ B的内容。所以在PHP4,为了节省内存空间,为B =新的一般改为参考,这是模式,B =新的美元

这是另一个官方例子:
在PHP5中,你不需要添加任何额外的对象引用的函数:
复制代码代码如下:< PHP
类Foo {
受保护的$名称;
功能__construct($str){
此$ = name;
}
功能__tostring(){
return'my叫。这个名字,我住在。__class__。。。;
}
功能集名称($str){
此$ = name;
}
}
类masterone {
保护$;
功能__construct($){
$;
}
功能__tostring(){
返回主控:__class__ Foo:'。|。$。;
}
功能setfooname($str){
美元-> foo -> setName($str);
}
}
类mastertwo {
保护$;
功能__construct($){
$;
}
功能__tostring(){
返回主控:__class__ Foo:'。|。$。;
}
功能setfooname($str){
美元-> foo -> setName($str);
}
}
酒吧= foo('bar美元新的);
打印();
打印()仅创建$条和打印条;
打印($ bar);
打印();
打印(现在 $巴兹是参照 $酒吧和印刷 美元美元栏和巴兹;

巴兹=美元美元吧;
打印($ bar);
打印();
打印(现在创建masterone两通 $条建设者;

M1 =新masterone美元(美元吧);
M2 =新mastertwo美元(美元吧);
印刷(M1);
印刷(M2);
打印();
打印(现在变化值 $酒吧和印刷 美元美元栏和巴兹;

$吧-> setName('baz);
打印($ bar);
打印($ Baz);
打印();
打印(现在打印一次MasterOne和两;
印刷(M1);
印刷(M2);
打印();
打印(现在改变MasterTwo Foo名称和打印一次MasterOne和两;

$ M2 -> setfooname('mastertwo 的foo);
印刷(M1);
印刷(M2);
打印(印刷 美元美元栏和巴兹;
打印($ bar);
打印($ Baz);
>

输出:
复制代码如下:只创建$ bar和打印$ bar
我的名字是酒吧,我住在。
现在售价巴兹是参照美元美元美元的酒吧和酒吧巴兹印刷
我的名字是酒吧,我住在。
现在Creating MasterOne和两美元及格栏的建设者
师父:masterone foo:我的名字|是酒吧和我生活foo。
师父:mastertwo foo:我的名字|是酒吧和我生活foo。
现在改变酒吧,酒吧和印刷美元美元美元巴兹价值
我的名字是巴兹和我住在foo。
我的名字是巴兹和我住在foo。
现在打印一次MasterOne和两
师父:masterone foo:我的名字|是foo 巴兹和我生活。
师父:mastertwo foo:我的名字|是foo 巴兹和我生活。
现在改变MasterTwo的名字和打印一次MasterOne和foo两
师父:masterone foo:我的名字是|mastertwo的Foo和我住在foo。
师父:mastertwo foo:我的名字是|mastertwo的Foo和我住在foo。
印刷美元美元栏和巴兹
我的名字是mastertwo的Foo和我住在foo。
我的名字是mastertwo的Foo和我住在foo。
最后一个例子是解析。
复制代码代码如下:$吧=新foo('bar);
M1 =新masterone美元(美元吧);
M2 =新mastertwo美元(美元吧);

实例对象为M1和M2美元美元美元的酒吧是酒吧而不是复制实例的引用,这是在PHP5中,对象引用,是特色,说
在1。M1或m2中,$ bar上的任何操作都会影响外部对象实例$ bar的相关值。
2中的变化。外部对象实例$ bar还会影响$ $和m2中的$ bar的引用相关值。

在PHP4中,等效的代码(即参考调用)是类似的:当一个对象实例作为另一个对象的上述属性,相应的代码(参考电话)如下:
复制代码代码如下:类{ {
值栏;
功能setbar($ newbar){
美元->吧= newbar;
}
}

5。参考作用
如果程序比较大,参考相同的对象变量越多,希望把对象用完后手动删除它,
6。消除基准
当你设置一个参考,你断开的变量名和变量的内容之间的结合。这并不意味着该变量的内容被破坏。例如:
复制代码代码如下所示:
< PHP
$ = 1;
美元=美元;
unset(美元);
>
没有设置$,$ A.
7.global参考
当一个变量用全局var声明时,实际上建立了一个对全局变量的引用,也就是说,做同样的事情:
< PHP
美元美元= { =VAR VAR};
>
这意味着,例如,设置变量没有设置为全局变量。
如果你给一个引用全局变量在函数声明中,在引用函数是唯一可见的里面。你可以使用全局数组避免美元。
示例引用函数中的全局变量。

复制代码代码如下:< PHP
$ var1 =实例变量;
= $var2;
功能global_references($ use_globals)
{
全球美元美元var1,var2;
如果(!use_globals美元){
美元美元var2 = / /可见var1;只有在函数
{人}
$全局{VAR2} var1 = $ / /;也可见全球语境
}
}
global_references(假);
回声VAR2设置为' $ VAR2设置为; / / VAR2
global_references(真的);
回声VAR2设置为' $ VAR2设置to'example VAR2; / /变量
>

美元作为全球风险;var = = {美元美元'var};所以,其他参考文献中给出的美元VaR只是改变局部变量的引用。

8美元这个
在一个对象的方法中,$始终是调用它的对象的引用。
在一个小插曲下面再次出现
指向PHP地址(类似指针)功能不是由用户自己来实现的,是Zend核心实现,PHP参考使用原则写时复制,除非有一个写操作,指向同一个地址的变量和对象不会被复制。
一个通俗的讲
1:如果有以下代码
{代码< <
$ =abc;
美元=美元;
>

事实上,a $和b都指向同一内存地址,而不是$ A和$ B。
2:如果在代码顶部添加以下代码
复制代码代码如下:< PHP
$ =EFG;
>

因为美元美元和B点需要再写的内存数据,Zend芯自动确定它自动产生一份数据美元$,并恢复一段记忆存储。
PHP的引入是一个高层次的话题,它是向变量、函数和对象添加符号。新手应该多加注意。正确理解PHP引用是非常重要的,对性能有很大的影响。此外,理解错误可能导致程序错误。
许多人错误地认为在PHP中的引用作为指针在C不是一样其实很不同。C语言中数组除在转移过程中没有显式声明的指针,则需要使用*的定义,并指出PHP地址(类似指针)功能不用户自己来实现的,是Zend核心实现,PHP参考使用原则写时拷贝。除非有一个写操作,指的是同一个对象或一个变量的地址不被复制,例如,下面的代码:
复制代码代码如下:$ a数组(A,C…n);
美元=美元;
如果程序只执行这里,$和$是相同的,但不喜欢C,美元和$占用不同的内存空间,而是指向相同的内存,这是PHP和C之间的区别,B =美元美元美元说,B不需要写至内存,Zend有助你实现参考,Zend将帮助你确定什么处理不处理什么时间的方式很聪明。
如果继续在后面写以下代码,添加一个函数,以引用的方式传递参数,并打印输出数组大小。
复制代码如下:功能printarray($ ARR) /参考
{
打印(计数($ ARR));

}
printarray(美元);
在上面的代码中,我们进口的美元到printarray阵列()函数的引用,和Zend引擎会认为printarray()可能会导致改变至当时,我们会自动生成一份$为B,和申请的内存来存储一次。这是书面的时间复制概念提到。
如果我们将上述代码更改为以下代码:
复制代码如下:功能printarray($ ARR) /价值转移
{
打印(计数($ ARR));
}
printarray(美元);

上面的代码通过美元价值直接printarray(),并没有在这个时候引用传递,所以没有写时复制。
您可以测试上述两行代码的执行效率,例如,在外部添加1000次循环以查看运行时间,结果将使您知道引用错误的使用将导致性能下降超过30%。
自理解:根据传递的值,它独立于函数中的参数,相当于局部变量的函数。根据地址(参考),它与函数中的参数有关,相当于全局变量的函数。从性能上看,上述分析已经足够了。

相关文章

使用快捷键来提高xp打开和关闭的速

使用快捷键来提高xp打开和关闭的速

快捷键,速度,电脑软件,xp,点评:机器的启闭速度已受到重视,以下几点是把好的关键,感兴趣的朋友可以参考一下。 组合键关闭方法 Windows XP中隐藏了一个快速关机的方法,把键在一秒钟内出来,具体方法: 先从鼠标点开始,然后快速按U键两次,整个过程必…

Oracle将查询结果放入一个定制表中

Oracle将查询结果放入一个定制表中

数据,查询,查询结果,放入,电脑软件,下面的示例代码可以将查询结果放入自定义表中,然后从自定义表中查询数据。 与AA 选择(ticketnumber,tickettype,versionnumber,stagename,dtanalyzed, gisprocessid,processstatus,dtreceived,用户名,用户名,名字, 姓…

AMD在低级别的设备驱动程序磁盘文

AMD在低级别的设备驱动程序磁盘文

设备驱动程序,文件,磁盘,低级,电脑软件,问题: 朋友的电脑是AMD双核处理器。在重新安装XP系统,安装双核补丁智能安装包后,它开始显示需要AMD的底层驱动程序磁盘amdlld.sys.close这个提示,系统可以正常使用。这些提示经常出现,感觉有点不舒服,如何…

一套积极的Windows7系统可用于多台

一套积极的Windows7系统可用于多台

系统,多台,可用于,电脑软件,问题: 家里有三台电脑。你可以买一套积极的Windows7系统安装在这三台电脑 回答: 微软规定一套积极的Windows7系统,有许可证编号,只能安装在一台计算机上。之前,微软已经售出了Windows7家庭套装,但很早就卖完了。现在…

人)~你的关心,即使不是太难

人)~你的关心,即使不是太难

太难,电脑软件,我是一个坏人,我不能和你交朋友,一个没有素质的人。 鱼因为水一直活着,我不是因为你闪闪发光。 也许,我们的暧昧,只不过是你心灵的瞬间。 牵着你的手,不要让记忆溜走,每一寸都围绕着你,一切都在心里。 爱情稍纵即逝,梦难长久,是空…

Win8快速关机方法

Win8快速关机方法

方法,快速,电脑软件,Win8系统,正常的关机方法,>设置>电源关闭;,有些繁琐,现在分享一个快速关机方法。 方法一:Win +1:打开设置,选择电源按钮关机,睡觉等。 方法二:首先,创建捷径。 方法:在桌面上右键单击新的快捷方式,由Shutdown.exe s -混合- T 00输…

导入mysql数据库文件的问题。FRM

导入mysql数据库文件的问题。FRM

数据库文件,电脑软件,mysql,FRM,网上搜索半天,最简单的方法是创建相同的数据库作为新的数据库原来的名字,然后复制文件就OK了。 然而,有时这是不可能的,会有一定的查询时,表不在确认存在问题。FRM,案件的db.opt文件的完整性,那么这台应使用InnoDB…

你如何在Win8系统搜索软件吗Window

你如何在Win8系统搜索软件吗Window

搜索,系统,操作系统,方法,如何在,点评:本章教你如何搜索软件在win8系统的计算机,在里面,我们已经有软件。 本文将教你如何在Windows 8系统下搜索我的软件。 1。单击键盘中的Windows图标键输入UI(start)接口以供参考。 后2。鼠标移动,点击红色区…

MySQL表索引的一些要点

MySQL表索引的一些要点

索引,要点,电脑软件,MySQL,1,表的主键和外部键必须索引。 2,表中有超过300的数据应编入索引。 三.经常与其他表相连的表,应该在连接字段上进行索引。 4。WHERE子句中经常出现的字段,尤其是大表的字段应该被索引。 5,索引应该建立在高选择字…

把Word翻译成SWF,像百度图书馆的阅

把Word翻译成SWF,像百度图书馆的阅

图书馆,百度,翻译成,思想,代码,复制代码代码如下所示: 类似百度库之类的功能需要转换。一般的过程是将Word转换成PDF格式,并将PDF格式转换为SWF格式,在网络上显示它实际上是SWF格式的内容。 第一个词转换为SWF,调用COM组件,可以通过WPS办公或转…

MySQL性能优化问题的优化

MySQL性能优化问题的优化

性能,优化,优化问题,电脑软件,MySQL,首先对项目背景做了简要介绍,这是一个在线测试实践平台。数据库使用mysql,表结构如图所示。 问题是一个列表的存储问题,随着数据量的约3万,answerresult表是一个表来存储用户回答的结果,和单表的记录是300万…

批量删除word文件的批处理方法

批量删除word文件的批处理方法

批处理,文件,批量删除,方法,电脑软件,问题: 一个同事变成了Word2007文件并打开它,在它发现了很多不同的颜色,这对阅读的影响很大。你如何批量删除这些词的注释 答案uff1a 批量删除word文件注释,参考方法如下。 方法:回顾在标签下的接受和拒绝…