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 09 PHP
php json_encode奇怪问题说明
Sep 27 PHP
基于php 随机数的深入理解
Jun 05 PHP
PHP SPL使用方法和他的威力
Nov 12 PHP
PHP实现的连贯操作、链式操作实例
Jul 08 PHP
php中动态修改ini配置
Oct 14 PHP
php中chdir()函数用法实例
Nov 13 PHP
使用 PHPStorm 开发 Laravel
Mar 24 PHP
PHP获取某个月最大天数(最后一天)的方法
Jul 29 PHP
PHP实现动态web服务器方法
Jul 29 PHP
php函数连续调用实例分析
Jul 30 PHP
PHP中isset、empty的用法与区别示例详解
Nov 05 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
解决phpcms更换javascript的幻灯片代码调用图片问题
2014/12/26 PHP
PHP实现数组array转换成xml的方法
2016/07/19 PHP
JavaScript 构造函数 面相对象学习必备知识
2010/06/09 Javascript
javascript与CSS复习(《精通javascript》)
2010/06/29 Javascript
复制小说文本时出现的随机乱码的去除方法
2010/09/07 Javascript
JavaScript中利用Array和Object实现Map的方法
2015/07/27 Javascript
微信小程序中多个页面传参通信的学习与实践
2017/05/05 Javascript
JS实现自定义状态栏动画文字效果示例
2017/10/12 Javascript
vue 引用自定义ttf、otf、在线字体的方法
2019/05/09 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
2019/05/23 Javascript
socket在egg中的使用实例代码详解
2019/05/30 Javascript
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
2020/02/13 Javascript
小程序自定义导航栏兼容适配所有机型(附完整案例)
2020/04/26 Javascript
基于Vue.js+Nuxt开发自定义弹出层组件
2020/10/09 Javascript
[02:51]DOTA2英雄基础教程 风暴之灵
2013/12/23 DOTA
[16:14]教你分分钟做大人:米拉娜(HEROS)
2014/11/24 DOTA
python以环状形式组合排列图片并输出的方法
2015/03/17 Python
python如何拆分含有多种分隔符的字符串
2018/03/20 Python
python简单的三元一次方程求解实例
2020/04/02 Python
pytorch读取图像数据转成opencv格式实例
2020/06/02 Python
解决Keras中CNN输入维度报错问题
2020/06/29 Python
CSS3实现伪类hover离开时平滑过渡效果示例
2017/08/10 HTML / CSS
CSS3 创建网页动画实现弹跳球动效果
2018/10/30 HTML / CSS
linux面试题参考答案(1)
2016/01/22 面试题
自我鉴定写作要点
2014/01/17 职场文书
一年级数学教学反思
2014/02/01 职场文书
小学英语教学反思案例
2014/02/04 职场文书
优秀团队获奖感言
2014/02/19 职场文书
春节联欢会策划方案
2014/05/16 职场文书
诉讼授权委托书
2014/10/15 职场文书
基层党支部整改方案
2014/10/25 职场文书
邀请函怎么写
2015/01/30 职场文书
物业公司管理制度
2015/08/05 职场文书
《狼王梦》读后感:可怜天下父母心
2019/11/01 职场文书
python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
2021/04/14 Python