php中函数前加&符号的作用分解


Posted in PHP onJuly 08, 2014

php变量前面加&符号是什么意思就不用多说了,大家都在用,就是两个变量同时指向一个地址而已,那么,php函数前面加&符号的意义又是什么呢?下面先上两个演示代码,然后再做解释。

function &chhua() 
{ 
static $b="3water.com";//申明一个静态变量 
$b=$b."WEB开发"; 
echo $b; 
return $b; 
} 
 
$a=chhua();//这条语句会输出 $b的值 为“3water.comWEB开发” 
$a="PHP"; 
echo "<Br>";
$a=chhua();//这条语 句会输出 $b的值 为“3water.comWEB开发WEB开发”  
echo "<Br>";
$a=&chhua();//这条语句会输出 $b的值 为“3water.comWEB开发WEB开发WEB开发” 
echo "<Br>";
$a="JS"; 
$a=chhua(); //这条语句会输出 $b的值 为"JSWEB开发"
 
 
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。

PHP 相关文章推荐
给多个地址发邮件的类
Oct 09 PHP
php iconv() : Detected an illegal character in input string
Dec 05 PHP
解析如何在PHP下载文件名中解决乱码的问题
Jun 20 PHP
关于crontab的使用详解
Jun 24 PHP
php获取qq用户昵称和在线状态(实例分析)
Oct 27 PHP
php使用websocket示例详解
Mar 12 PHP
php 解压rar文件及zip文件的方法
May 05 PHP
php时间戳格式化显示友好的时间函数分享
Oct 21 PHP
PHP中字符安全过滤函数使用小结
Feb 25 PHP
Linux系统递归生成目录中文件的md5的方法
Jun 29 PHP
PHP实现简单数字分页效果
Jul 26 PHP
让你的PHP7更快之Hugepage用法分析
May 31 PHP
PHP实现的连贯操作、链式操作实例
Jul 08 #PHP
PHP类中的魔术方法(Magic Method)简明总结
Jul 08 #PHP
PHP的魔术常量__METHOD__简介
Jul 08 #PHP
PHP中的插件机制原理和实例
Jul 08 #PHP
phpmailer在服务器上不能正常发送邮件的解决办法
Jul 08 #PHP
php去掉URL网址中带有PHPSESSID的配置方法
Jul 08 #PHP
PHP大批量插入数据库的3种方法和速度对比
Jul 08 #PHP
You might like
全国FM电台频率大全 - 17 湖北省
2020/03/11 无线电
PHP中mb_convert_encoding与iconv函数的深入解析
2013/06/21 PHP
CodeIgniter中实现泛域名解析
2014/07/19 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
php对象在内存中的存在形式分析
2015/02/03 PHP
Laravel5.1 框架路由基础详解
2020/01/04 PHP
鼠标滑在标题上显示图片的JS代码
2013/11/19 Javascript
js仿苹果iwatch外观的计时器代码分享
2015/08/26 Javascript
jQuery mobile 移动web(6)
2015/12/20 Javascript
手机图片预览插件photoswipe.js使用总结
2016/08/25 Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
2016/08/29 Javascript
js 打开新页面在屏幕中间的实现方法
2016/11/02 Javascript
AngularJS中scope的绑定策略实例分析
2017/10/30 Javascript
element-ui 设置菜单栏展开的方法
2018/08/22 Javascript
微信小程序后端(java)开发流程的详细步骤
2019/11/13 Javascript
JavaScript监听触摸事件代码实例
2019/12/30 Javascript
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
Python中的Matplotlib模块入门教程
2015/04/15 Python
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
2016/07/11 Python
Python双精度浮点数运算并分行显示操作示例
2017/07/21 Python
python实现数独游戏 java简单实现数独游戏
2018/03/30 Python
Python协程 yield与协程greenlet简单用法示例
2019/11/22 Python
python3操作注册表的方法(Url protocol)
2020/02/05 Python
keras 实现轻量级网络ShuffleNet教程
2020/06/19 Python
详解python 条件语句和while循环的实例代码
2020/12/28 Python
css3实现垂直下拉动画菜单示例
2014/04/22 HTML / CSS
CSS3 3D旋转rotate效果实例介绍
2016/05/03 HTML / CSS
html5中svg canvas和图片之间相互转化思路代码
2014/01/24 HTML / CSS
管理科学大学生求职信
2013/11/13 职场文书
市场营销管理制度
2014/01/29 职场文书
家居饰品店创业计划书
2014/01/31 职场文书
食品工程专业求职信
2014/06/15 职场文书
商务邀请函
2015/01/30 职场文书
有关朝花夕拾的读书笔记
2015/06/29 职场文书
html5调用摄像头截图功能
2022/01/18 Javascript
python APScheduler执行定时任务介绍
2022/04/19 Python