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 身份证号验证函数
May 07 PHP
php下使用curl模拟用户登陆的代码
Sep 10 PHP
探讨多键值cookie(php中cookie存取数组)的详解
Jun 06 PHP
php实现把url转换迅雷thunder资源下载地址的方法
Nov 07 PHP
PHP调用wsdl文件类型的接口代码分享
Nov 19 PHP
PHP使用JSON和将json还原成数组
Feb 12 PHP
thinkPHP批量删除的实现方法分析
Nov 09 PHP
使用YII2框架实现微信公众号中表单提交功能
Sep 04 PHP
快速解决PHP调用Word组件DCOM权限的问题
Dec 27 PHP
laravel 框架配置404等异常页面
Jan 07 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
Dec 18 PHP
PHP新手指南
Apr 01 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版微信数据统计接口用法示例
2016/10/12 PHP
php获取当前月与上个月月初及月末时间戳的方法
2016/12/05 PHP
PHP实现二维数组根据key进行排序的方法
2016/12/30 PHP
js 中 document.createEvent的用法
2010/08/29 Javascript
Javascript 面向对象(二)封装代码
2012/05/23 Javascript
js 操作select和option常用代码整理
2012/12/13 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
整理JavaScript创建对象的八种方法
2015/11/03 Javascript
jQuery的promise与deferred对象在异步回调中的作用
2016/05/03 Javascript
JavaScript中的boolean布尔值使用学习及相关技巧讲解
2016/05/26 Javascript
javascript经典特效分享 手风琴、轮播图、图片滑动
2016/09/14 Javascript
基于hover的用法实例(推荐)
2017/07/04 Javascript
js中自定义react数据验证组件实例详解
2018/10/19 Javascript
koa+mongoose实现简单增删改查接口的示例代码
2019/05/13 Javascript
微信小程序实现弹出菜单动画
2019/06/21 Javascript
解决vue打包后vendor.js文件过大问题
2019/07/03 Javascript
layui表单验证select下拉框实现验证的方法
2019/09/05 Javascript
Nodejs + Websocket 指定发送及群聊的实现
2020/01/09 NodeJs
JavaScript实现左右滚动电影画布
2020/02/06 Javascript
Python模块包中__init__.py文件功能分析
2016/06/14 Python
关于Python 的简单栅格图像边界提取方法
2019/07/05 Python
Python进度条的制作代码实例
2019/08/31 Python
python图像处理模块Pillow的学习详解
2019/10/09 Python
Python和Anaconda和Pycharm安装教程图文详解
2020/02/04 Python
写好求职应聘自荐信的三部曲
2013/09/21 职场文书
单位单身证明范本
2014/01/11 职场文书
餐饮业员工工作决心书
2014/03/11 职场文书
我的长生果教学反思
2014/04/28 职场文书
让世界充满爱演讲稿
2014/05/24 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
销售人员工作自我评价
2014/09/21 职场文书
私用公车造成事故检讨书
2014/11/16 职场文书
个人典型事迹材料
2014/12/30 职场文书
创先争优个人总结
2015/03/04 职场文书
观后感开头
2015/06/19 职场文书
使用CSS实现小三角边框原理解析
2021/11/07 HTML / CSS