PHP参考值实例详细解决方案学习
在PHP意味着同一个变量内容的不同名称访问的参考。这不是一个指针的C,而是引用符号表的别名。请注意,在PHP中,变量名和变量的内容是不同的,所以相同的内容可以有不同的名字,最恰当的比喻是UNIX文件名和文件本身的变量名是一个目录条目,和变量的内容是文件本身。参考可以看作是在UNIX文件系统的硬链接。
1:对变量的引用
复制代码代码如下所示:
< PHP
$ = 100;
美元=美元;
在这里输出100
在这里输出100,$ A,$值是一百。
$ = 200;
在这里输出200
在这里输出200,可以看到它们使用相同的地址,改变一个,另一个会改变。
>
二:函数中的参考值
复制代码代码如下所示:
< PHP
函数main($ A,$ B){
$ = $ A + 100;
返回$;
}
main(55,$ b);实际上,它的内存地址是传递给main函数的内存参数,并通过参数改变值。
在这里输出155,
>
三:对象的引用值
参考对象
复制代码代码如下所示:
<
俱乐部类{
var =皇家马德里;
}
新俱乐部;
美元=美元;
在这里输出皇家马德里的输出
在这里输出皇家马德里的输出
$ > name =罗纳尔多;
在这里输出罗纳尔多
>
引用
当你设置一个参考,你断开的变量名和变量的内容之间的结合。这并不意味着该变量的内容被破坏。例如:
复制代码代码如下所示:
< PHP
美元= 'ronaldo
美元=美元;
unset(美元);
>
没有设置$,$ A.
例如,参考传递
test1.php
复制代码代码如下所示:
< PHP
*参考转移
可以通过引用传递以下内容:
变量(如$)
新的报表,如foo(新foobar())
从函数返回的引用,例如:
* /
函数富($ var)
{
$ + +;
}
$ = 5;
/合法
美孚(A);
foo(新stdClass());
非法使用
函数条()说明/丢失
{
$ = 5;
返回$;
}
foo((酒吧)); / / PHP 5.0.5导致致命错误
富($ = 5)表达式不是变量。
富(5)致命错误
>
test2.php
复制代码代码如下所示:
< PHP
功能测试(a)
{
$ = $ A + 100;
}
$ = 1;
1
测试(b);在这里传递给函数的B是变量B内容的内存地址,您可以通过改变函数中的$值来改变b的值。
;
101
/ *****************************
*
这里需要指出的是,在call_user_func_array参数要求
*
* **************************** /
/ /以上试验($);在B的前面不加美元符号,但在功能call_user_func_array,引用参数传递,你需要登录,如下代码所示:
函数A($ b){
美元+;
}
$=0;
call_user_func_array('a',阵列($ C));
回声$;
1 输出
>
参考收益
当你想使用一个函数来寻找一个应该绑定到变量的引用时,引用返回。不要使用返回引用来提高性能,引擎足够聪明来优化它。只有在有合理的技术原因的情况下才返回引用。
复制代码代码如下所示:
< PHP
功能测试()
{
静态$ = 0;声明静态变量
美元= $ + 1;
回声$;
返回$;
}
($ = test);此语句将输出$为1的值。
$ = 5;
($ = test);此语句将输出$为2的值。
该语句将输出$为3的值,其中将有内存地址内存地址返回$ B B $ B变量和$变量指向相同的位置。
$ = 5;返回$ B在$ B变量的值中发生了变化。
($ = test);此语句将输出$为6的值。
>
解释:
通过这种方式,从函数中返回的$()=测试()与普通函数调用不同。原因是:这是PHP的规则。
PHP指定对函数的引用是通过$ =测试()返回的;
引用的返回值是什么(PHP手册说:当你想使用一个函数来寻找一个应该绑定到变量的引用时,引用返回)。
上面的例子解释了这一点。
函数的作用是:将函数的值赋值给$,而$中的任何更改不影响函数中的$ B。
函数通过$ =测试()调用。它的功能是将$ B变量的内存地址放在返回$ B中,并将$变量的内存地址放在同一位置。
这相当于这个效果($ A = $ B),因此更改$的值也会更改$的值,以便执行它。
$ =测试();
$ = 5;
在此之后,B的值被更改为5。
这是让每个人理解函数的引用返回静态变量,并且函数的引用实际返回到对象。
一个有趣的例子,就是你看到oschina:
复制代码代码如下所示:
< PHP
美元=阵列('abe '本','cam);
foreach($一$ K = > $ N)
N = strtoupper(N);
foreach($一$ K = > $ N)这里没有参考 / /通知!
;
Print_r ($a);
>
将导致:
安倍
本
本
阵列
(
{ 0 }
{ 1 } >本
{ 2 } >本
)
Explanation: the second foreach loops are as follows:
阵列
(
{ 0 }
{ 1 } >本
{ 2 }
)
阵列
(
{ 0 }
{ 1 } >本
{ 2 } >本
)
阵列
(
{ 0 }
{ 1 } >本
{ 2 } >本
)
因为没有设置(N),所以它总是指向数组的最后一个元素。第二个,第一圈$ N,$ { 2 }到ABE,第二周期为本,第三是与本。