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代码优化及php相关问题总结
Oct 09 PHP
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
Jun 11 PHP
在smarty中调用php内置函数的方法
Feb 07 PHP
php中文验证码实现示例分享
Jan 12 PHP
Linux下安装PHP MSSQL扩展教程
Oct 24 PHP
ThinkPHP文件缓存类代码分享
Apr 22 PHP
PHP+Mysql+jQuery实现发布微博程序 php篇
Oct 15 PHP
PHP模板引擎Smarty中变量的使用方法示例
Apr 11 PHP
php连接oracle数据库的方法(测试成功)
May 26 PHP
php 删除一维数组中某一个值元素的操作方法
Feb 01 PHP
php curl操作API接口类完整示例
May 21 PHP
PHP使用递归按层级查找数据的方法
Nov 10 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
UCenter中的一个可逆加密函数authcode函数代码
2010/07/20 PHP
说说PHP的autoLoad自动加载机制
2012/09/27 PHP
PHP查询网站的PR值
2013/10/30 PHP
php设计模式之单例模式使用示例
2014/01/20 PHP
完美实现wordpress禁止文章修订和自动保存的方法
2014/11/03 PHP
php 参数过滤、数据过滤详解
2015/10/26 PHP
PHP实现生成推广海报的方法详解
2018/03/14 PHP
Extjs 继承Ext.data.Store不起作用原因分析及解决
2013/04/15 Javascript
如何将网页表格内容导入excel
2014/02/18 Javascript
js判断登录与否并确定跳转页面的方法
2015/01/30 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
js简单网速测试方法完整实例
2015/12/15 Javascript
浅谈Node.js:Buffer模块
2016/12/05 Javascript
js实现点击每个li节点,都弹出其文本值及修改
2016/12/15 Javascript
浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
2016/12/22 Javascript
JavaScript this使用方法图解
2020/02/04 Javascript
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
通过实例解析json与jsonp原理及使用方法
2020/09/27 Javascript
Vue+Element-U实现分页显示效果
2020/11/15 Javascript
javascript 数组(list)添加/删除的实现
2020/12/17 Javascript
python 获取文件下所有文件或目录os.walk()的实例
2018/04/23 Python
浅谈Python在pycharm中的调试(debug)
2018/11/29 Python
Python爬虫实战之12306抢票开源
2019/01/24 Python
简单了解django处理跨域请求最佳解决方案
2020/03/25 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
pycharm2020.2 配置使用的方法详解
2020/09/16 Python
举例讲解Python装饰器
2020/12/24 Python
pytorch 计算Parameter和FLOP的操作
2021/03/04 Python
Omio中国:全欧洲低价大巴、火车和航班搜索和比价
2018/08/09 全球购物
公司会议策划方案
2014/05/17 职场文书
艺术节开幕词
2015/01/28 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书
2016年度农村党员干部主题教育活动总结
2016/04/06 职场文书
小学四年级作文之写景
2019/08/23 职场文书
用JS写一个发布订阅模式
2021/11/07 Javascript