liukuan.net

liukuan.net,发现,记录,分享

378

php函数前面加&符号的意思,函数的引用返回的作用

PHP代码:
基本形式:

1
2
3
4
5
6
7
8
<code class='php'>
function &find_var($param) //这里用&在对象前面,作用为声明
{
    /* ...code... */
    return $found_var;
}
$foo =& find_var($bar); //这里用&,作用为联系变量
$foo->x = 2; //赋值给函数

例子:
function &test()
{
static $b=0;//申明一个静态变量
$b=$b+1;
echo $b;
return $b;
}
$a=test();//这条语句会输出$b的值为1,
$a=5;
$a=test();//这条语句会输出$b的值为2 ,因为没有引用返回,$a=5,不对对象起赋值作用
$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 ......

php函数前面加&符号是什么意思?有的函数前面会加&,因为很少见到,所以不明白php函数前面加&符号是什么意思
那么,php函数前面加&符号有什么作用呢?

Java代码
function &test()
{
static $b=0;//申明一个静态变量
$b=$b+1;
echo $b;
return $b;
}

$a=&test();//这条语句会输出 $b的值 为1
$a=6;
test();//这条语句会输出$b的值 为7

php变量前面加&符号是什么意思

先看一个示例

Php代码

$foo = 321;
$bar = &$foo;
$bar = 123;
print $foo;那么输出的结果将会是什么呢

Php代码
123

为什么会这样呢?

改动新的变量将影响到原始变量,这种赋值操作更加快速。
注意:只有命名变量才可以传地址赋值,就是说,改变了$bar的值,也就改变了$foo的值了。

另一个例子:

$_GET[1] = 1;
function &a()
{
$a = $_GET[1];
return $a;
}
$x =& a();
$x = 'MoontoC';
echo $_GET[1]; // 此时这里会显示 MoontoC, 而不是最初赋值的1, 你明白其中的意义了吗, 使用函数传值时必须双方都使用引用符号才有意义,才能真正引用, 而任何一边少了引用符号, 都不会得到错误的内容, 但内容是传值, 而不是传引用了。没有程序基础的人最初学php的确很难理解传值和传引用的重要性, 觉得反正都能得到自己要的东西, 其实不是的, 很多时候虽然得到的东西一样, 但是代价却完全不一样, 一个长达200万字的值, 被当作值传送就是400万字同时放在内存中待用, 多耗费一倍内存的意思,而传引用就只是一个快捷方式传送过去而已。

原文地址 : https://liukuan.net/php/79.html
本站遵循 : 知识共享署名-非商业性使用-相同方式共享 3.0 版权协议
版权声明 : 原创文章转载时,请务必以超链接形式标明 文章原始出处
作者:admin | 分类:php | 标签: php
此文章共有条评论, 人参与 |Powerd By Angboo