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 is_file()和is_dir()用于遍历目录时用法注意事项
Mar 02 PHP
php中使用Akismet防止垃圾评论的代码
Jun 10 PHP
关于PHPDocument 代码注释规范的总结
Jun 25 PHP
Youku 视频绝对地址获取的方法详解
Jun 26 PHP
VPS中使用LNMP安装WordPress教程
Dec 28 PHP
php操作MongoDB类实例
Jun 17 PHP
CI框架中redis缓存相关操作文件示例代码
May 17 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
Jun 14 PHP
Laravel 5.4前后台分离,通过不同的二级域名访问方法
Oct 13 PHP
解决laravel session失效的问题
Oct 14 PHP
php ZipArchive实现多文件打包下载实例
Oct 31 PHP
如何在centos8自定义目录安装php7.3
Nov 28 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
《猛禽小队》:DC宇宙的又一超级大烂片
2020/04/09 欧美动漫
PHP form 表单传参明细研究
2009/07/17 PHP
PHP实现登陆表单提交CSRF及验证码
2017/01/24 PHP
PHP中Cookie的使用详解(简单易懂)
2017/04/28 PHP
PHP检测一个数组有没有定义的方法步骤
2019/07/20 PHP
在多个页面使用同一个HTML片段《续》
2011/03/04 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
2013/11/23 Javascript
javascript使用smipleChart实现简单图表
2015/01/02 Javascript
Node.js开发之访问Redis数据库教程
2015/01/14 Javascript
JS实现点击文字对应DIV层不停闪动效果的方法
2015/03/02 Javascript
Javascript 是你的高阶函数(高级应用)
2015/06/15 Javascript
用jQuery的AJax实现异步访问、异步加载
2016/11/02 Javascript
nodejs redis 发布订阅机制封装实现方法及实例代码
2016/12/15 NodeJs
angular5 子组件监听父组件传入值的变化方法
2018/09/30 Javascript
JavaScript制作3D旋转相册
2020/08/02 Javascript
js实现上下左右键盘控制div移动
2020/01/16 Javascript
JavaScript实现打砖块游戏
2020/02/25 Javascript
VUE UPLOAD 通过ACTION返回上传结果操作
2020/09/07 Javascript
Python字符遍历的艺术
2008/09/06 Python
Django中的FBV和CBV用法详解
2019/09/15 Python
基于SpringBoot构造器注入循环依赖及解决方式
2020/04/26 Python
python库skimage给灰度图像染色的方法示例
2020/04/27 Python
python raise的基本使用
2020/09/10 Python
HTML5中FileReader接口使用方法实例详解
2017/08/26 HTML / CSS
来自圣地亚哥的实惠太阳镜:Knockaround
2018/08/27 全球购物
会议活动邀请函
2014/01/27 职场文书
中年人生感言
2014/02/04 职场文书
《老山界》教学反思
2014/04/08 职场文书
关于热爱祖国的演讲稿
2014/05/04 职场文书
2014年仓库管理员工作总结
2014/11/18 职场文书
2014年行政人事工作总结
2014/12/09 职场文书
2014年党总支工作总结
2014/12/18 职场文书
2015年社区服务活动总结
2015/03/25 职场文书
2016年社区国庆节活动总结
2016/04/01 职场文书
Nginx安装完成没有生成sbin目录的解决方法
2021/03/31 Servers
django上传文件的三种方式
2021/04/29 Python