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 相关文章推荐
模板引擎Smarty深入浅出介绍
Dec 06 PHP
Apache2 httpd.conf 中文版
Dec 06 PHP
10条PHP编程习惯助你找工作
Sep 29 PHP
php变量范围介绍
Oct 15 PHP
php数组删除元素示例
Mar 21 PHP
php无限极分类递归排序实现方法
Nov 11 PHP
PHP实现搜索相似图片
Sep 22 PHP
php实现微信公众号无限群发
Oct 11 PHP
微信获取用户地理位置信息的原理与步骤
Nov 12 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
Jan 21 PHP
PHP实现网站访问量计数器
Oct 27 PHP
PHP实现微信提现功能
Sep 30 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创建PDF中文文档
2006/10/09 PHP
PHP mkdir()无写权限的问题解决方法
2014/06/19 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(六)
2014/06/23 PHP
jQuery插件 tabBox实现代码
2010/02/09 Javascript
js控制滚动条缓慢滚动到顶部实现代码
2013/03/20 Javascript
Js注册协议倒计时的小例子
2013/06/24 Javascript
jQuery打字效果实现方法(附demo源码下载)
2015/12/18 Javascript
JavaScript 经典实例日常收集整理(常用经典)
2016/03/30 Javascript
AngularJS使用自定义指令替代ng-repeat的方法
2016/09/17 Javascript
js实现table添加行tr、删除行tr、清空行tr的简单实例
2016/10/15 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
2016/12/30 Javascript
JavaScript自动点击链接 防止绕过浏览器访问的方法
2017/01/19 Javascript
jquery编写日期选择器
2017/03/16 Javascript
jQuery实现所有验证通过方可提交的表单验证
2017/11/21 jQuery
详解angular2 控制视图的封装模式
2018/12/27 Javascript
Node爬取大批量文件的方法示例
2019/06/28 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
vue中使用带隐藏文本信息的图片、图片水印的方法
2020/04/24 Javascript
浅谈Python中copy()方法的使用
2015/05/21 Python
python列表操作之extend和append的区别实例分析
2015/07/28 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
2019/07/04 Python
Scrapy框架基本命令与settings.py设置
2020/02/06 Python
Python正则re模块使用步骤及原理解析
2020/08/18 Python
Speedo美国:澳大利亚顶尖泳衣制造商
2016/08/03 全球购物
德国咖啡批发商:Coffeefair
2019/08/26 全球购物
如何提高SQL Server的安全性
2016/07/25 面试题
军训心得体会
2013/12/31 职场文书
文秘应聘自荐书范文
2014/02/18 职场文书
学生会主席演讲稿
2014/04/25 职场文书
文明生主要事迹
2014/05/25 职场文书
2014年护士工作总结范文
2014/11/11 职场文书
水电工岗位职责
2015/02/14 职场文书
上课迟到检讨书
2015/05/06 职场文书
战马观后感
2015/06/08 职场文书
2019学子的答谢词范本!
2019/07/05 职场文书
学会Python数据可视化必须尝试这7个库
2021/06/16 Python