php引用传递


Posted in PHP onApril 01, 2021

引用传递:将一个变量通过引用传递给函数,这样该函数就可以修改其参数的值。被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址
注:在函数调用时没有引用符号——只有函数定义中有。

主要是实参和形参的相互影响性。引用传递:形参的改变会影响实参 , 值传递:赋值,不相互影响 。 按照按值传递的做法来传值时,如果需要原来的值发生改变,则需要在进行代码复制,若是值够大或者是一大串字符串时,会使代码比较多,重复,而引用传递则不需要复制PHP代码,对提高性能这一个方面有很大的优势。

function adduce(&$string) // 引入变量,使用同一个存储地址
	{
	    $string .= '我是引用传递.';
	    echo $string;// 输出 '我是外部字符串, 我是引用传递.'
	}
	
	$str = '我是外部字符串, ';
	adduce($str);
	echo $str;    // 输出 '我是外部字符串, 我是引用传递.'
  • $str输出:
    • 我是外部字符串, 我是引用传递.
  • $string输出:
    • 我是外部字符串, 我是引用传递.

以上示例证明 $str更改了地址。新地址与 $string 共用同一值

如果没有这个&符号,请看示例

function adduce2($string)
	{
	    $string .= '内部字符串.';
	    echo $string;// 输出 '我是外部字符串, 我是引用传递.'
	}
	
	$str = '外部字符串, ';
	adduce2($str);
	echo $str;    // 输出 '外部字符串, '
  • $str输出:
    • 外部字符串,
  • $string输出:
    • 我是外部字符串, 我是引用传递.

以上示例证明 $str内容不变。与 $string 互不影响

函数的引用传递

//示例1
	$a = 1;
	function &func(&$a) {
	  return $a;
	}
	$b = func($a);	// 这里不是函数引用传递
	$b = 2;
	echo "a: $a, b: $b, c: $c. <br />";//输出a: 1, b: 2, c: 1.   可见对$b的修改不会影响$a
-----------------------------------------------------------------------------------------------------------------------------------
	//示例2
	$a = 1;
	function &adduce(&$a) {
	    return $a;
	}
	$c = &adduce($a);	// 这是函数引用传递,$c和$a引用同一个值
	$c = 3;
	echo "a: $a, b: $b, c: $c. <br />";//输出a: 3, b: 2, c: 3.   可见对$c的修改会影响$a
PHP 相关文章推荐
一步一步学习PHP(2)――PHP类型
Feb 15 PHP
DedeCMS dede_channeltype表字段注释
Apr 07 PHP
如何批量替换相对地址为绝对地址(利用bat批处理实现)
May 27 PHP
PHP中IP地址与整型数字互相转换详解
Aug 20 PHP
CI框架Session.php源码分析
Nov 03 PHP
PHP使用in_array函数检查数组中是否存在某个值
Mar 25 PHP
PHP定时任务获取微信access_token的方法
Oct 10 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 PHP
thinkphp3.2同时连接两个数据库的简单方法
Aug 13 PHP
解决thinkPHP 5 nginx 部署时,只跳转首页的问题
Oct 16 PHP
php实现的简单多进程服务器类完整示例
Feb 01 PHP
浅谈如何提高PHP代码的质量
May 28 PHP
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
Apr 01 #PHP
PHP判断是否是json字符串
Apr 01 #PHP
php TP5框架生成二维码链接
Apr 01 #PHP
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
Apr 01 #PHP
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
Apr 01 #PHP
PHP控制循环操作的时间
Apr 01 #PHP
php字符串倒叙
Apr 01 #PHP
You might like
PHP写杨辉三角实例代码
2011/07/17 PHP
php中使用DOM类读取XML文件的实现代码
2011/12/14 PHP
探讨fckeditor在Php中的配置详解
2013/06/08 PHP
ubuntu下配置nginx+php+mysql详解
2015/09/10 PHP
php blowfish加密解密算法
2016/07/02 PHP
PHP按一定比例压缩图片的方法
2018/10/12 PHP
JS event使用方法详解
2008/04/28 Javascript
js 函数的副作用分析
2011/08/23 Javascript
jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果
2011/09/26 Javascript
js内存泄露的几种情况详细探讨
2013/05/31 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
2013/08/06 Javascript
使用原生JS实现弹出层特效
2014/12/22 Javascript
javascript的BOM
2016/05/03 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
2016/12/14 Javascript
vue2.0数据双向绑定与表单bootstrap+vue组件
2017/02/27 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
2017/03/14 Javascript
用jQuery实现圆点图片轮播效果
2017/03/19 Javascript
使用D3.js创建物流地图的示例代码
2018/01/27 Javascript
Angular使用操作事件指令ng-click传多个参数示例
2018/03/27 Javascript
用vuex写了一个购物车H5页面的示例代码
2018/12/04 Javascript
jQuery判断自定义属性data-val用法示例
2019/01/07 jQuery
JavaScript如何借用构造函数继承
2019/11/06 Javascript
vue中el-input绑定键盘按键(按键修饰符)
2020/07/22 Javascript
如何在JavaScript中正确处理变量
2020/12/25 Javascript
Python3编程实现获取阿里云ECS实例及监控的方法
2017/08/18 Python
Python实现 版本号对比功能的实例代码
2019/04/18 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
2020/02/10 Python
HTML5 body设置自适应全屏
2020/05/07 HTML / CSS
adidas旗下高尔夫装备供应商:TaylorMade Golf(泰勒梅高尔夫)
2016/08/28 全球购物
法国综合购物网站:RueDuCommerce
2016/09/12 全球购物
微笑服务标语
2014/06/24 职场文书
工作作风承诺书
2014/08/30 职场文书
淘宝文案策划岗位职责
2015/04/14 职场文书
《西游记》读后感(3篇)
2019/09/20 职场文书
详解Vue的sync修饰符
2021/05/15 Vue.js
Java Spring Lifecycle的使用
2022/05/06 Java/Android