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 相关文章推荐
PHP5中使用DOM控制XML实现代码
May 07 PHP
Php output buffering缓存及程序缓存深入解析
Jul 15 PHP
php中把美国时间转为北京时间的自定义函数分享
Jul 28 PHP
php获得文件大小和文件创建时间的方法
Mar 13 PHP
php将HTML表格每行每列转为数组实现采集表格数据的方法
Apr 03 PHP
PHP解密Unicode及Escape加密字符串
May 17 PHP
PHP ajax 异步执行不等待执行结果的处理方法
May 27 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
Oct 10 PHP
php实现等比例压缩图片
Jul 26 PHP
零基础php编程好学吗
Oct 11 PHP
TP5框架简单登录功能实现方法示例
Oct 31 PHP
php中yar框架实例用法讲解
Dec 27 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生成静态页
2006/11/25 PHP
YII2.0之Activeform表单组件用法实例
2016/01/09 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
2017/04/01 PHP
Laravel学习教程之本地化模块
2017/08/18 PHP
for 循环性能比较 提高for循环的效率
2009/03/19 Javascript
JQuery 操作/获取table具体代码
2013/06/13 Javascript
浅析Node.js查找字符串功能
2014/09/03 Javascript
Javascript代码实现仿实例化类
2015/04/03 Javascript
js获取滚动距离的方法
2015/05/30 Javascript
jQuery实现Flash效果上下翻动的中英文导航菜单代码
2015/09/22 Javascript
js简单判断flash是否加载完成的方法
2016/06/21 Javascript
最细致的vue.js基础语法 值得收藏!
2016/11/03 Javascript
canvas 画布在主流浏览器中的尺寸限制详细介绍
2016/12/15 Javascript
JS实现的tab切换选项卡效果示例
2017/02/28 Javascript
jQuery Ajax向服务端传递数组参数值的实例代码
2017/09/03 jQuery
angularjs的单选框+ng-repeat的实现方法
2018/09/12 Javascript
vue iview的菜单组件Mune 点击不高亮的解决方案
2019/11/01 Javascript
[01:34]完美“圣”典宣传片震撼发布,12.17与你不见不散
2016/12/16 DOTA
[44:40]Serenity vs Pain 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python基于BeautifulSoup实现抓取网页指定内容的方法
2015/07/09 Python
利用Python实现原创工具的Logo与Help
2018/12/03 Python
Python自动化导出zabbix数据并发邮件脚本
2019/08/16 Python
Python中注释(多行注释和单行注释)的用法实例
2019/08/28 Python
基于torch.where和布尔索引的速度比较
2020/01/02 Python
Python如何用filter函数筛选数据
2020/03/05 Python
Python如何使用bokeh包和geojson数据绘制地图
2020/03/21 Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
2020/05/20 Python
迪卡侬中国官网:Decathlon中国
2020/08/10 全球购物
sort命令的作用和用法
2012/11/04 面试题
几个Shell Script面试题
2012/08/31 面试题
学生就业推荐信
2013/11/13 职场文书
车间班长岗位职责
2013/11/30 职场文书
大学生求职信
2014/06/17 职场文书
2015年安全生产月工作总结
2015/07/27 职场文书
Vue+Element UI实现概要小弹窗的全过程
2021/05/30 Vue.js
关于Oracle12C默认用户名system密码不正确的解决方案
2021/10/16 Oracle