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获取地址栏信息的代码
Oct 08 PHP
php 静态化实现代码
Mar 20 PHP
php 变量定义方法
Jun 14 PHP
php中神奇的fastcgi_finish_request
May 02 PHP
PHP的几个常用数字判断函数代码
Apr 24 PHP
codeigniter中测试通过的分页类示例
Apr 17 PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
Jul 08 PHP
PHP截取指定图片大小的方法
Dec 10 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
Apr 28 PHP
php实现的网页版剪刀石头布游戏示例
Nov 25 PHP
PHP封装curl的调用接口及常用函数详解
May 31 PHP
php用wangeditor3实现图片上传功能
Aug 22 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无限分类(树形类)
2013/09/28 PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
2016/03/07 PHP
PHP简单实现文本计数器的方法
2016/04/28 PHP
PHP判断一个数组是另一个数组子集的方法详解
2017/07/31 PHP
laravel框架使用极光推送消息操作示例
2020/02/15 PHP
使用jscript实现二进制读写脚本代码
2008/06/09 Javascript
js 距离某一时间点时间是多少实现代码
2013/10/14 Javascript
JQuery弹出层示例可自定义
2014/05/19 Javascript
node.js不得不说的12点内容
2014/07/14 Javascript
详解JS函数重载
2014/12/04 Javascript
javascript编写贪吃蛇游戏
2015/07/07 Javascript
javascript与jquery中的this关键字用法实例分析
2015/12/24 Javascript
JavaScript动态创建div等元素实例讲解
2016/01/06 Javascript
创建一个类Person的简单实例
2016/05/17 Javascript
AngularJS基础 ng-value 指令简单示例
2016/08/03 Javascript
浅谈vue+webpack项目调试方法步骤
2017/09/11 Javascript
Vuex 使用及简单实例(计数器)
2018/08/29 Javascript
ES5和ES6中类的区别总结
2020/12/21 Javascript
[01:32]DOTA2上海特锦赛现场采访:最想COS的英雄
2016/03/25 DOTA
python单元测试unittest实例详解
2015/05/11 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
2016/04/27 Python
Python+matplotlib实现填充螺旋实例
2018/01/15 Python
windows下numpy下载与安装图文教程
2019/04/02 Python
Python3中的bytes和str类型详解
2019/05/02 Python
Python基于os.environ从windows获取环境变量
2020/06/09 Python
Python -m参数原理及使用方法解析
2020/08/21 Python
python 实现图片修复(可用于去水印)
2020/11/19 Python
CSS3实现文字描边的2种方法(小结)
2020/02/14 HTML / CSS
兰蔻加拿大官方网站:Lancome加拿大
2016/08/05 全球购物
澳大利亚女性快速时尚零售商:Ally Fashion
2018/04/25 全球购物
人民教师的自我评价分享
2014/02/21 职场文书
优秀研究生主要事迹
2014/06/03 职场文书
2014四风问题对照检查材料范文
2014/09/15 职场文书
2014年超市工作总结
2014/11/19 职场文书
2016应届毕业生实习评语
2015/12/01 职场文书
详细聊聊浏览器是如何看闭包的
2021/11/11 Javascript