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 相关文章推荐
如何在WIN2K下安装PHP4.04
Oct 09 PHP
PHP安装攻略:常见问题解答(三)
Oct 09 PHP
PHP中$_SERVER的详细参数与说明
Jul 29 PHP
UCenter中的一个可逆加密函数authcode函数代码
Jul 20 PHP
php数据入库前清理 注意php intval与mysql的int取值范围不同
Dec 12 PHP
比较简单的百度网盘文件直链PHP代码
Mar 24 PHP
ThinkPHP之N方法实例详解
Jun 20 PHP
PHP中开启gzip压缩的2种方法
Jan 31 PHP
php获取、检查类名、函数名、方法名的函数方法
Jun 25 PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
Mar 21 PHP
php使用fullcalendar日历插件详解
Mar 06 PHP
Laravel框架模型的创建及模型对数据操作示例
May 07 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生成静态页面教程
2012/01/10 PHP
php二维数组转成字符串示例
2014/02/17 PHP
php面向对象中的魔术方法中文说明
2014/03/04 PHP
php中curl和file_get_content的区别
2014/05/10 PHP
PHP封装分页函数实现文本分页和数字分页
2014/10/23 PHP
PHP获取数组最大值下标的方法
2015/05/12 PHP
Symfony2之session与cookie用法小结
2016/03/18 PHP
laravel配置Redis多个库的实现方法
2019/04/10 PHP
Laravel框架之解决前端显示图片问题
2019/10/24 PHP
javascript定义函数的方法
2010/12/06 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
2011/12/21 Javascript
JS完整获取IE浏览器信息包括类型、版本、语言等等
2014/05/22 Javascript
HTML5 Shiv完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法
2015/11/25 Javascript
AngularJs实现ng1.3+表单验证
2015/12/10 Javascript
纯JS代码实现一键分享功能
2016/04/20 Javascript
功能强大的Bootstrap组件(结合js)
2016/08/03 Javascript
如何获取元素的最终background-color
2017/02/06 Javascript
p5.js入门教程之鼠标交互的示例
2018/03/16 Javascript
Vue项目webpack打包部署到Tomcat刷新报404错误问题的解决方案
2018/05/15 Javascript
详解如何快速配置webpack多入口脚手架
2018/12/28 Javascript
vant 自定义 van-dropdown-item的用法
2020/08/05 Javascript
基于JavaScript实现大文件上传后端代码实例
2020/08/18 Javascript
[51:17]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第二场 10月30日
2020/10/31 DOTA
[03:12]完美世界DOTA2联赛PWL DAY9集锦
2020/11/10 DOTA
django进阶之cookie和session的使用示例
2018/08/17 Python
python3 读取Excel表格中的数据
2018/10/16 Python
Python实现二维曲线拟合的方法
2018/12/29 Python
python保存字典和读取字典的实例代码
2019/07/07 Python
python 实现查询Neo4j多节点的多层关系
2019/12/23 Python
Python函数递归调用实现原理实例解析
2020/08/11 Python
纯css3实现鼠标经过图片显示描述的动画效果
2014/09/01 HTML / CSS
CSS3实现红包抖动效果
2020/12/23 HTML / CSS
EJB发布WEB服务一般步骤
2012/10/31 面试题
护士求职信
2014/07/05 职场文书
机关班子查摆问题及整改措施
2014/10/28 职场文书
毕业设计答辩开场白
2015/05/29 职场文书