PHP函数引用返回的实例详解

2025-05-29 0 29

引用返回

手册里是这么写的:引用返回用在当想用函数找到引用应该被绑定在哪一个变量上面时。不要用返回引用来增加性能,引擎足够聪明来自己进行优化。仅在有合理的技术原因时才返回引用!要返回引用

当你想将函数返回引用绑定到某个变量时,PHP允许你这么做:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16
function &returns_reference()

{

static $someref = 0;

$someref++;

return $someref;

}

$newref = &returns_reference();//引用返回,相当于 $newref = &$someref;

echo $newref; //1

//phpfensi.com

$notref = returns_reference(); //值传递的是副本

$newref = 100;

echo $notref; //2

$newref = 100;

echo returns_reference(); //101

可见,想让函数返回引用,必须在函数申明和赋值时都带上&操作符.

对于类中方法也是如此:

?

1

2

3

4

5

6

7

8

9

10

11

12
class foo {

public $value = 0;

public function &getValue() {

return $this->value;

}

}

$obj = new foo;

$myValue = &$obj->getValue(); // $myValue is a reference to $obj->value, which is 42.

$obj->value = 2;

echo $myValue;

一些简单的例子

看下面的简单例子,尝试去理解引用返回.

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21
<?php

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

?>

//程序运行结果:

1

2

3

6

尽管函数声明方式是 function &test() 这样,但我们通过这种方式 $a = test() 函数调用得到的其实不是函数引用返回,这跟普通的函数调用没有区别。PHP 规定通过 $a = &test() 这种方式得到的才是函数引用返回

用上面的例子来解释就是,$a = test() 这种方式调用函数,只是将函数的值赋给 $a 而已,而$a做任何改变都不会影响到函数中的$b。

而通过 $a = &test() 方式调用函数呢,它的作用是将 return $b 中的 $b 变量的内存地址与 $a 变量的内存地址指向了同一个地方。即产生了相当于这样的效果 ($a=&$b), 所以改变 $a 的值也同时改变了 $b 的值。

所以在执行了

?

1

2

3
$a = &test();

$a = 5;

以后,$b的值变为了5。

再来个程序例子加深理解:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30
<?php

/*

** 值传递和引用传递,值传递传递的是值的一个复本,引用传递传递的是值指向的内存地址

*/

// 函数的引用,定义时也要加上 &

function &func($a,$b){

// 这里为了更直观看到效果,定义一个静态变量

static $result = 0;

$result+=$a+$b;

echo $result.'<br />';

return $result;

}

$a = $b = 10;

// PHP里这样写函数的引用调用,和调用普通函数没有区别(只是将函数的返回值复制给$c这个变量,$c做任何改变不会影响上面函数中的$result)

// 要记住:PHP里的函数引用定义及调用都要在函数名前加上 &

$c = func($a,$b);

// 第一次执行func(),其静态变量$result的值变为 20(10+10)

// 改变$c的值,不会对下面一行语句产生影响

$c = 666;

// 第二次执行func(),其静态变量$result的值变为 40(20+10+10)

$c = func($a,$b);

echo '<hr />';

// 这样才是PHP中引用函数的调用方式

$d = &func($a,$b);

// 第三次执行func(),其静态变量$result的值变为 40(40+10+10)

$d = 888;

// 第四次执行func(),其静态变量$result的值变为 908(888+10+10)

$d = func($a,$b);

?>

总结

关于php函数引用返回的内容到这就基本结束了,希望对大家学习或使用PHP函数能有所帮助,如果有疑问大家可以留言交流。谢谢大家对快网idc的支持。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 PHP函数引用返回的实例详解 https://www.kuaiidc.com/96831.html

相关文章

发表评论
暂无评论