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简介
Oct 09 PHP
php Smarty 字符比较代码
Feb 27 PHP
PHP写的求多项式导数的函数代码
Jul 04 PHP
php的慢速日志引起的Mysql错误问题分析
May 13 PHP
javascript some()函数用法详解
Nov 13 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
Dec 19 PHP
php封装的验证码类分享
Feb 26 PHP
php实现将数据做成json的格式给前端使用
Aug 21 PHP
PHP的简单跳转提示的实现详解
Mar 14 PHP
laravel 自定义常量的两种方案
Oct 14 PHP
phpQuery采集网页实现代码实例
Apr 02 PHP
PHP笛卡尔积实现原理及代码实例
Dec 09 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+Mysql+jQuery中国地图区域数据统计实例讲解
2015/10/10 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
Javascript 刷新全集常用代码
2009/11/22 Javascript
Jquery Ajax学习实例7 Ajax所有过程事件分析示例
2010/03/23 Javascript
window.addEventListener来解决让一个js事件执行多个函数
2012/12/26 Javascript
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
jquery中交替点击事件的实现代码
2014/02/14 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
简单谈谈jQuery(function(){})与(function(){})(jQuery)
2014/12/19 Javascript
非常棒的jQuery图片轮播效果
2016/04/17 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
2016/05/12 Javascript
js基于cookie记录来宾姓名的方法
2016/07/19 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
2016/08/01 Javascript
Jquery on绑定的事件 触发多次实例代码
2016/12/08 Javascript
vue-router 学习快速入门
2017/03/01 Javascript
原生js实现仿window10系统日历效果的实例
2017/10/31 Javascript
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
JS/jQuery实现DIV延时几秒后消失或显示的方法
2018/02/12 jQuery
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
Vue实现拖放排序功能的实例代码
2019/07/08 Javascript
解决vue-cli@3.xx安装不成功的问题及搭建ts-vue项目
2020/02/09 Javascript
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
Python Tkinter基础控件用法
2014/09/03 Python
Python读取Excel的方法实例分析
2015/07/11 Python
Python实现简单文本字符串处理的方法
2018/01/22 Python
python 上下文管理器及自定义原理解析
2019/11/19 Python
Pycharm 2020年最新激活码(亲测有效)
2020/09/18 Python
python设置中文界面实例方法
2020/10/27 Python
Python用户自定义异常的实现
2020/12/25 Python
浅析与CSS3的loading动画加载相关的transition优化
2015/05/18 HTML / CSS
详解canvas drawImage()方法绘制图片不显示的问题
2018/10/08 HTML / CSS
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
护士年终工作总结不会写?各科护士模板总结
2020/01/02 职场文书
Vue中foreach数组与js中遍历数组的写法说明
2021/06/05 Vue.js
Python实现对齐打印 format函数的用法
2022/04/28 Python