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版本号
Oct 09 PHP
Mysql中分页查询的两个解决方法比较
May 02 PHP
基于PHP CURL用法的深入分析
Jun 09 PHP
php中文验证码实现方法
Jun 18 PHP
ThinkPHP控制器详解
Jul 27 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
Feb 18 PHP
CentOS系统中PHP安装扩展的方式汇总
Apr 09 PHP
PHP网站自动化配置的实现方法(必看)
May 27 PHP
php二维码生成以及下载实现
Sep 28 PHP
PHP仿tp实现mvc框架基本设计思路与实现方法分析
May 23 PHP
PHP全局使用Laravel辅助函数dd
Dec 26 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
php中时间轴开发(刚刚、5分钟前、昨天10:23等)
2011/10/03 PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
2015/01/29 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
2017/03/12 PHP
Discuz不使用插件实现简单的打赏功能
2019/03/21 PHP
微信支付之JSAPI公众号支付详解
2019/05/15 PHP
JS 图片缩放效果代码
2010/06/09 Javascript
js中的string.format函数代码
2020/08/11 Javascript
关于onchange事件在IE和FF下的表现及解决方法
2014/03/08 Javascript
jQuery表单域属性过滤器用法分析
2015/02/10 Javascript
javascript实现倒计时(精确到秒)
2015/06/26 Javascript
js简单工厂模式用法实例
2015/06/30 Javascript
深入理解JS函数的参数(arguments)的使用
2016/05/28 Javascript
nodejs对express中next函数的一些理解
2017/09/08 NodeJs
javascript填充默认头像方法
2018/02/22 Javascript
angularjs使用gulp-uglify压缩后执行报错的解决方法
2018/03/07 Javascript
JS数组去重常用方法实例小结【4种方法】
2018/05/28 Javascript
js遍历添加栏目类添加css 再点击其它删除css【推荐】
2018/06/12 Javascript
JS实现指定区域的全屏显示功能示例
2019/04/25 Javascript
如何通过JS实现转码与解码
2020/02/21 Javascript
Python文件读取的3种方法及路径转义
2015/06/21 Python
详解python 拆包可迭代数据如tuple, list
2017/12/29 Python
Python三种遍历文件目录的方法实例代码
2018/01/19 Python
实例讲解python中的协程
2018/10/08 Python
python 阶乘累加和的实例
2019/02/01 Python
Python使用百度api做人脸对比的方法
2019/08/28 Python
Python Opencv提取图片中某种颜色组成的图形的方法
2019/09/19 Python
Python matplotlib以日期为x轴作图代码实例
2019/11/22 Python
python实现录屏功能(亲测好用)
2020/03/02 Python
Django项目创建及管理实现流程详解
2020/10/13 Python
Free People中国官网:波西米亚风格女装服饰
2016/08/30 全球购物
美国羊皮公司:Overland
2018/01/15 全球购物
.net C#面试题
2012/08/28 面试题
保护地球的宣传语
2015/07/13 职场文书
SQL Server作业失败:无法确定所有者是否有服务器访问权限的解决方法
2021/06/30 SQL Server
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
2022/03/03 Python
十大最强妖精系宝可梦,哲尔尼亚斯实力最强,第五被称为大力士
2022/03/18 日漫