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.MVC的模板标签系统(五)
Sep 05 PHP
将时间以距今多久的形式表示,PHP,js双版本
Sep 25 PHP
破解.net程序(dll文件)编译和反编译方法
Jan 31 PHP
php实现可逆加密的方法
Aug 11 PHP
大家在抢红包,程序员在研究红包算法
Aug 31 PHP
Zend Framework基本页面布局分析
Mar 19 PHP
PHP实现上传多文件示例代码
Feb 20 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
Sep 28 PHP
PHP生成(支持多模板)二维码海报代码
Apr 30 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
Apr 09 PHP
深入学习微信网址链接解封的防封原理visit_type
Aug 15 PHP
php自动加载代码实例详解
Feb 26 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 采集程序原理分析篇
2010/03/05 PHP
ThinkPHP中的关联模型注意点
2014/06/16 PHP
laravel 创建命令行命令的图文教程
2019/10/23 PHP
JavaScript 设计模式 富有表现力的Javascript(一)
2010/05/26 Javascript
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
2013/01/23 Javascript
实现局部遮罩与关闭原理及代码
2013/02/04 Javascript
nullJavascript中创建对象的五种方法实例
2013/05/07 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
2014/01/12 Javascript
Javascript快速排序算法详解
2014/12/03 Javascript
JavaScript的模块化开发框架Sea.js上手指南
2016/05/12 Javascript
jquery css实现邮箱自动补全
2016/11/14 Javascript
Angular ng-repeat遍历渲染完页面后执行其他操作详细介绍
2016/12/13 Javascript
详解使用VueJS开发项目中的兼容问题
2018/08/02 Javascript
原生js 实现表单验证功能
2021/02/08 Javascript
[01:19:11]Ti4 循环赛第二日 NaVi.us vs iG
2014/07/11 DOTA
[01:01]2020完美高校联赛(秋)西安落幕
2021/03/11 DOTA
python二叉树遍历的实现方法
2013/11/21 Python
windows下python安装pip图文教程
2018/05/25 Python
Python实现自定义函数的5种常见形式分析
2018/06/16 Python
python实现在图片上画特定大小角度矩形框
2018/10/24 Python
python爬取内容存入Excel实例
2019/02/20 Python
使用python获取(宜宾市地震信息)地震信息
2019/06/20 Python
python3.6+selenium实现操作Frame中的页面元素
2019/07/16 Python
基于torch.where和布尔索引的速度比较
2020/01/02 Python
python爬取王者荣耀全皮肤的简单实现代码
2020/01/31 Python
Python如何对XML 解析
2020/06/28 Python
C#实现对任一张表的数据进行增,删,改,查要求,运用Webservice,体现出三层架构
2014/07/11 面试题
护校行动方案
2014/05/31 职场文书
安全目标责任书
2014/07/22 职场文书
工商局所长四风自我剖析及整改措施
2014/10/26 职场文书
幼儿园园长新年寄语2015
2014/12/08 职场文书
环境建议书
2015/02/04 职场文书
2015年全国爱眼日活动小结
2015/02/27 职场文书
庆祝教师节主持词
2015/07/06 职场文书
MySQL8.0无法启动3534的解决方法
2021/06/03 MySQL
springboot 多数据源配置不生效遇到的坑及解决
2021/11/17 Java/Android