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 相关文章推荐
PHP下MAIL的另一解决方案
Oct 09 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
May 09 PHP
PHP程序开发范例学习之表单 获取文本框的值
Aug 08 PHP
php cli 小技巧
Jun 03 PHP
php中opendir函数用法实例
Nov 15 PHP
PHP图像处理类库MagickWand用法实例分析
May 21 PHP
PHP经典算法集锦【经典收藏】
Sep 14 PHP
php array_map使用自定义的函数处理数组中的每个值
Oct 26 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
Nov 14 PHP
php可变长参数处理函数详解
Feb 22 PHP
ThinkPHP框架实现的邮箱激活功能示例
Jun 15 PHP
HTTP头隐藏PHP版本号实现过程解析
Dec 09 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
建立文件交换功能的脚本(三)
2006/10/09 PHP
snoopy 强大的PHP采集类使用实例代码
2010/12/09 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
2013/01/13 PHP
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
PHP解码unicode编码的中文字符代码分享
2014/08/13 PHP
老生常谈PHP面向对象之标识映射
2017/06/21 PHP
laravel实现批量更新多条记录的方法示例
2017/10/22 PHP
JavaScript 设计模式之组合模式解析
2010/04/09 Javascript
js鼠标左右键 键盘值小结
2010/06/11 Javascript
打豆豆小游戏 用javascript编写的[打豆豆]小游戏
2013/01/08 Javascript
使用jQuery mobile库检测url绝对地址和相对地址的方法
2015/12/04 Javascript
JQuery ztree带筛选、异步加载实例讲解
2016/02/25 Javascript
深入浅析JavaScript中的Function类型
2016/07/09 Javascript
backbone简介_动力节点Java学院整理
2017/07/14 Javascript
DVA框架统一处理所有页面的loading状态
2017/08/25 Javascript
详解在vue-cli中使用路由
2017/09/25 Javascript
在webstorm开发微信小程序之使用阿里自定义字体图标的方法
2018/11/15 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
2019/06/03 Javascript
微信小程序以ssm做后台开发的实现示例
2020/04/08 Javascript
JS实现canvas简单小画板功能
2020/06/23 Javascript
JavaScript图像放大镜效果实现方法详解
2020/06/28 Javascript
Python中针对函数处理的特殊方法
2014/03/06 Python
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
2015/05/22 Python
Python中函数的参数定义和可变参数用法实例分析
2015/06/04 Python
详解python logging日志传输
2020/07/01 Python
如何用python免费看美剧
2020/08/11 Python
CSS Grid布局教程之网格单元格布局
2014/12/30 HTML / CSS
前端实现弹幕效果的方法总结(包含css3和canvas的实现方式)
2018/07/12 HTML / CSS
GoPro摄像机美国官网:美国运动相机厂商
2018/07/03 全球购物
LUISAVIAROMA德国官网:时尚奢侈品牌购物网站
2020/11/12 全球购物
创建青年文明号材料
2014/05/09 职场文书
建设幸福中国演讲稿
2014/09/11 职场文书
党员专题组织生活会发言材料
2014/10/17 职场文书
2014年双拥工作总结
2014/11/21 职场文书
实习证明格式范文
2015/06/16 职场文书
vue ant design 封装弹窗表单的使用
2022/06/01 Vue.js