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 相关文章推荐
xml+php动态载入与分页
Oct 09 PHP
文章推荐系统(二)
Oct 09 PHP
php5.2时间相差8小时
Jan 15 PHP
PHP5 安装方法
Jan 15 PHP
php入门学习知识点四 PHP正则表达式基本应用
Jul 14 PHP
教你如何在CI框架中使用 .htaccess 隐藏url中index.php
Jun 09 PHP
PHP命名空间(namespace)的动态访问及使用技巧
Aug 18 PHP
php实现的通用图片处理类
Mar 24 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
Mar 01 PHP
CodeIgniter 完美解决URL含有中文字符串
May 13 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
Aug 28 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
Oct 11 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 万年历实现代码
2012/10/18 PHP
在PHP上显示JFreechart画的统计图方法
2013/11/03 PHP
php封装的smartyBC类完整实例
2016/10/19 PHP
通过PHP设置BugFree获取邮箱通知
2019/04/25 PHP
Jquery Ajax学习实例4 向WebService发出请求,返回实体对象的异步调用
2010/03/16 Javascript
jQuery中prevAll()方法用法实例
2015/01/08 Javascript
纯javascript实现简单下拉刷新功能
2015/03/13 Javascript
javascript实现链接单选效果的方法
2015/05/13 Javascript
input点击后placeholder中的提示消息消失
2016/01/15 Javascript
javascript实现简单的on事件绑定
2016/08/23 Javascript
JS与CSS3实现图片响应鼠标移动放大效果示例
2018/05/04 Javascript
js实现弹幕飞机效果
2020/08/27 Javascript
[00:43]魔廷新尊——痛苦女王至宝捆绑包
2020/06/12 DOTA
Python字符串替换实例分析
2015/05/11 Python
Python中for循环控制语句用法实例
2015/06/02 Python
用pandas按列合并两个文件的实例
2018/04/12 Python
PyCharm设置SSH远程调试的方法
2018/07/17 Python
pycharm重置设置,恢复默认设置的方法
2018/10/22 Python
python 返回列表中某个值的索引方法
2018/11/07 Python
python url 参数修改方法
2018/12/26 Python
Python + OpenCV 实现LBP特征提取的示例代码
2019/07/11 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
2019/07/14 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
2019/09/07 Python
django框架ModelForm组件用法详解
2019/12/11 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
2020/01/21 Python
利用css3-animation实现逐帧动画效果
2016/03/10 HTML / CSS
html+css实现自定义图片上传按钮功能
2019/09/04 HTML / CSS
HTML5本地存储之IndexedDB
2017/06/16 HTML / CSS
英国著名的小众美容品牌网站:Alyaka
2017/08/08 全球购物
人事档案接收函
2014/01/12 职场文书
新年爱情寄语
2014/04/08 职场文书
投标人法定代表人授权委托书格式
2014/09/28 职场文书
承诺书模板大全
2015/05/04 职场文书
民间借贷纠纷答辩状
2015/08/03 职场文书
受欢迎的自荐信,就这么写!
2019/04/19 职场文书
Python字符串格式化方式
2022/04/07 Python