>  기사  >  백엔드 개발  >  定义函数时前面加个号代表什么?_PHP教程

定义函数时前面加个号代表什么?_PHP教程

WBOY
WBOY원래의
2016-07-13 10:51:041222검색




定义函数时前面加个&号代表什么?

如题,请高手举例说明. 谢谢


最佳答案[url=http://www.111cn.cn/bbs/space.php?username=qxhy123]链接标记qxhy123[/url]
[url=http://www.111cn.cn/bbs/space.php?uid=66514]链接标记[img]http://www.111cn.cn/server/avatar.php?uid=66514&size=small[/img][/url]下面俺来揭晓正确答案,这是论坛的E蜗牛童鞋的帖子里看到的,准确的说明了函数前面加个&的作用,以及具体的效果.

函数的引用返回
先看代码 复制PHP内容到剪贴板
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

下面解释下: 
通过这种方式$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


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/632607.htmlTechArticle定义函数时前面加个size=small[/img][/url]下面俺来揭晓正确答案,这是论坛的E蜗牛童鞋的帖子里看到的,准确的说明了函数前面加个test() { stati...
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.