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
杏林同学录(五)
Oct 09 PHP
我的论坛源代码(一)
Oct 09 PHP
php读取txt文件组成SQL并插入数据库的代码(原创自Zjmainstay)
Jul 31 PHP
ThinkPHP 表单自动验证运用示例
Oct 13 PHP
php实现的ping端口函数实例
Nov 12 PHP
Yii不依赖Model的表单生成器用法实例
Dec 04 PHP
php计算两个日期相差天数的方法
Mar 14 PHP
Linux安装配置php环境的方法
Jan 14 PHP
PHP简单实现数字分页功能示例
Aug 24 PHP
Yii2设置默认控制器的两种方法
May 19 PHP
php + nginx项目中的权限详解
May 23 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
最贵的咖啡是怎么产生的,它的风味怎么样?
2021/03/04 新手入门
在Windows中安装Apache2和PHP4的权威指南
2006/10/09 PHP
剖析 PHP 中的输出缓冲
2006/12/21 PHP
PHP伪静态写法附代码
2008/06/20 PHP
DedeCMS dede_channeltype表字段注释
2010/04/07 PHP
PHP输出缓存ob系列函数详解
2014/03/11 PHP
php使用function_exists判断函数可用的方法
2014/11/19 PHP
PHP生成和获取XML格式数据的方法
2016/03/04 PHP
thinkPHP通用控制器实现方法示例
2017/11/23 PHP
JavaScript 常见对象类创建代码与优缺点分析
2009/12/07 Javascript
Javascript 按位左移运算符使用介绍(
2014/02/04 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
2014/07/18 Javascript
jQuery实现统计复选框选中数量
2014/11/24 Javascript
浅谈JavaScript中的作用域和闭包问题
2015/07/07 Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
2016/06/16 Javascript
用js写的一个路由(简单实例)
2016/09/24 Javascript
微信小程序 JS动态修改样式的实现代码
2017/02/10 Javascript
ES6新特性之解构、参数、模块和记号用法示例
2017/04/01 Javascript
jQuery实现切换隐藏与显示同时切换图标功能
2017/10/29 jQuery
js判断数组是否包含某个字符串变量的实例
2017/11/24 Javascript
如何能分清npm cnpm npx nvm
2019/01/17 Javascript
用Vue.js在浏览器中实现裁剪图像功能
2019/06/18 Javascript
python pands实现execl转csv 并修改csv指定列的方法
2018/12/12 Python
numpy 声明空数组详解
2019/12/05 Python
Python进程的通信Queue、Pipe实例分析
2020/03/30 Python
Python如何实现线程间通信
2020/07/30 Python
Keds官方网站:购买帆布运动鞋和经典皮鞋
2016/11/12 全球购物
信用社实习人员自我鉴定
2013/09/20 职场文书
创业计划书中要认真思考的问题
2013/12/28 职场文书
高中军训感言500字
2014/02/24 职场文书
离婚协议书应该怎么写
2014/10/12 职场文书
2014年帮扶工作总结
2014/11/26 职场文书
小学生暑假安全公约
2015/07/14 职场文书
高三物理教学反思
2016/02/20 职场文书
nginx 多个location转发任意请求或访问静态资源文件的实现
2021/03/31 Servers
Django中celery的使用项目实例
2022/07/07 Python