讲讲PHP中自定义函数前面的&是怎么一回事~

在CI框架中,我看到了很多的函数前面都出现了“&”这个引用操作符,很是奇怪。

在传统的课堂教学和书本中这个很少有这方面的例子吧,
我反正基本是没有看到,所以找了点资料后,自己记录下来吧。
其实"&"就是一个地址引用,我们应该很熟悉下面的例子

<?php
	$temp = 1;
	$a = &$temp;
	$a = 2;
	echo $temp;	//结果:2 没有意见吧?
?>
那么自定义函数前面加“&”是哪个的地址引用?函数的还是函数返回值的?
看看下面例子:
<?php
/**
 * 定义一个测试函数
 * @return int 整数类型
 */
function &test(){
	static $a;
	$a += 1;
	echo $a;
	return $a;
}

//看展示
$t = test();	//$t结果为:1
$t = 5;
$t = test();	//$t结果为:2

$t = &test();	//$t结果为:3
$t = 5;
$t = test();	//$t结果为:6
?>
答案是一旦出现"&"引用的是函数的返回值的地址。因为$t指向了&test()的返回值的地址,所以才出现了$t为6的情况。

愚见,如果有错误,请大家帮忙指出不胜感激。

你可能感兴趣的:(PHP,函数,自定义函数,引用)