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
基于asp+ajax和数据库驱动的二级联动菜单
May 06 PHP
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
Nov 01 PHP
php正则表达匹配中文问题分析小结
Mar 25 PHP
PHP基础陷阱题(变量赋值)
Sep 12 PHP
使用PHP会话(Session)实现用户登陆功能
Jun 29 PHP
sae使用smarty模板的方法
Dec 17 PHP
codeigniter教程之上传视频并使用ffmpeg转flv示例
Feb 13 PHP
PHP批量生成静态HTML的简单原理和方法
Apr 20 PHP
PHP实现的sqlite数据库连接类
Dec 12 PHP
php实现点击可刷新验证码
Nov 07 PHP
php链式操作的实现方式分析
Aug 12 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小偷程序的设计与实现方法详解
2016/10/15 PHP
用javascript实现点击链接弹出&quot;图片另存为&quot;而不是直接打开
2007/08/15 Javascript
JavaScript的变量作用域深入理解
2009/10/25 Javascript
Javascript面向对象编程(三) 非构造函数的继承
2011/08/28 Javascript
jQuery插件-jRating评分插件源码分析及使用方法
2012/12/28 Javascript
jquery获取特定name所有选中的checkbox,支持IE9标准模式
2013/03/18 Javascript
jquery中.add()的使用分析
2013/04/26 Javascript
Jquery 类网页微信二维码图块滚动效果具体实现
2013/10/14 Javascript
卸载安装Node.js与npm过程详解
2016/08/15 Javascript
Vue.js每天必学之计算属性computed与$watch
2016/09/05 Javascript
js动态生成form 并用ajax方式提交的实现方法
2016/09/09 Javascript
js中数组插入、删除元素操作的方法
2017/02/15 Javascript
基于JQuery的购物车添加删除以及结算功能示例
2017/03/08 Javascript
常用的 JS 排序算法 整理版
2018/04/05 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
2019/11/07 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
2020/05/15 Javascript
深入理解Python分布式爬虫原理
2017/11/23 Python
windows10下python3.5 pip3安装图文教程
2018/04/02 Python
python读取LMDB中图像的方法
2018/07/02 Python
Python实现高斯函数的三维显示方法
2018/12/29 Python
PyTorch的深度学习入门教程之构建神经网络
2019/06/27 Python
Django框架视图介绍与使用详解
2019/07/18 Python
Python CSV文件模块的使用案例分析
2019/12/21 Python
Python如何通过Flask-Mail发送电子邮件
2020/01/29 Python
Python调用C/C++的方法解析
2020/08/05 Python
五个2015 年最佳HTML5 框架
2015/11/11 HTML / CSS
关于Java String的一道面试题
2013/09/29 面试题
Java编程面试题
2016/04/04 面试题
房地产销售经理岗位职责
2014/01/01 职场文书
项目管理计划书
2014/01/09 职场文书
《一个中国孩子的呼声》教学反思
2014/02/12 职场文书
新年爱情寄语
2014/04/08 职场文书
感恩之星事迹材料
2014/05/03 职场文书
2014年业务员工作总结范文
2014/11/17 职场文书
服务行业标语口号
2015/12/26 职场文书
个人自我鉴定怎么写?
2019/07/01 职场文书