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 和 MySQL 基础教程(一)
Oct 09 PHP
中篇:安装及配置PHP
Dec 13 PHP
php空间不支持socket但支持curl时recaptcha的用法
Nov 07 PHP
PHP的博客ping服务代码
Feb 04 PHP
php中OR与|| AND与&amp;&amp;的区别总结
Oct 26 PHP
php实现通过cookie换肤的方法
Jul 13 PHP
redis查看连接数及php模拟并发创建redis连接的方法
Dec 15 PHP
PHP读取XML格式文件的方法总结
Feb 27 PHP
PHP基于SMTP协议实现邮件发送实例代码
Apr 27 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
Sep 16 PHP
php模拟post提交请求调用接口示例解析
Aug 07 PHP
50个优秀经典PHP算法大集合 附源码
Aug 26 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/11/27 PHP
PHP代码优化的53个细节
2014/03/03 PHP
thinkPHP模板算术运算相关函数用法分析
2016/07/12 PHP
javascript 支持链式调用的异步调用框架Async.Operation
2009/08/04 Javascript
Javascript 实现TreeView CheckBox全选效果
2010/01/11 Javascript
JQuery onload、ready概念介绍及使用方法
2013/04/27 Javascript
javascript中自定义对象的属性方法分享
2013/07/12 Javascript
node.js中的events.emitter.listeners方法使用说明
2014/12/10 Javascript
jQuery中width()方法用法实例
2014/12/24 Javascript
Eclipse引入jquery报错如何解决
2015/12/01 Javascript
javascript实现图片轮播效果
2016/01/20 Javascript
值得分享的Bootstrap Table使用教程
2016/11/23 Javascript
Angularjs 动态添加指令并绑定事件的方法
2017/04/13 Javascript
浅谈JS获取元素的N种方法及其动静态讨论
2017/08/25 Javascript
十个免费的web前端开发工具详细整理
2017/09/18 Javascript
Vue写一个简单的倒计时按钮功能
2018/04/20 Javascript
jQuery属性选择器用法实例分析
2019/06/28 jQuery
vue实现图片上传预览功能
2019/12/23 Javascript
JavaScript中使用Spread运算符的八种方法总结
2020/06/18 Javascript
[10:21]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster 选手采访
2021/03/11 DOTA
使用python的chardet库获得文件编码并修改编码
2014/01/22 Python
python写的一个文本编辑器
2014/01/23 Python
python实现排序算法
2014/02/14 Python
Python单元测试框架unittest使用方法讲解
2015/04/13 Python
Windows和Linux下Python输出彩色文字的方法教程
2017/05/02 Python
python中nan与inf转为特定数字方法示例
2017/05/11 Python
Python堆排序原理与实现方法详解
2018/05/11 Python
python统计字母、空格、数字等字符个数的实例
2018/06/29 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
pandas如何处理缺失值
2019/07/31 Python
python爬虫刷访问量 2019 7月
2019/08/01 Python
PHP中如何创建和修改数组
2012/05/02 面试题
小学生清明节演讲稿
2014/09/05 职场文书
2015年初中生自我评价范文
2015/03/03 职场文书
基于Python实现一个春节倒计时脚本
2022/01/22 Python
「地球外少年少女」BD发售宣传CM公开
2022/03/21 日漫