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 相关文章推荐
关于文本留言本的分页代码
Oct 09 PHP
网页游戏开发入门教程三(简单程序应用)
Nov 02 PHP
仿AS3实现PHP 事件机制实现代码
Jan 27 PHP
PHP 获取MySQL数据库里所有表的实现代码
Jul 13 PHP
PHP 设计模式之观察者模式介绍
Feb 22 PHP
基于curl数据采集之正则处理函数get_matches的使用
Apr 28 PHP
php实现查询百度google收录情况(示例代码)
Aug 02 PHP
php输出金字塔的2种实现方法
Dec 16 PHP
php表单提交实例讲解
Nov 12 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
Oct 20 PHP
PHP给前端返回一个JSON对象的实例讲解
May 31 PHP
laravel-admin自动生成模块,及相关基础配置方法
Oct 08 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语法(5)
2006/10/09 PHP
PHP版自动生成文章摘要
2008/07/23 PHP
phpmyadmin 3.4 空密码登录的实现方法
2010/05/29 PHP
CI框架给视图添加动态数据
2014/12/01 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
json2.js的初步学习与了解
2011/10/06 Javascript
jquery 利用show和hidden实现级联菜单示例代码
2013/08/09 Javascript
基于replaceChild制作简单的吞噬特效
2015/09/21 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
2016/06/14 Javascript
Node.js测试中的Mock文件系统详解
2016/11/21 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
使用vue框架 Ajax获取数据列表并用BootStrap显示出来
2017/04/24 Javascript
js实现登录与注册界面
2017/11/01 Javascript
javascript+css实现进度条效果
2020/03/25 Javascript
JavaScript 装逼指南(js另类写法)
2020/05/10 Javascript
原生JS实现天气预报
2020/06/16 Javascript
js实现简单的倒计时
2021/01/28 Javascript
[51:32]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
Python实现获取网站PR及百度权重
2015/01/21 Python
详解Python发送邮件实例
2016/01/10 Python
python使用pymysql实现操作mysql
2016/09/13 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
2017/05/11 Python
基于Python 中函数的 收集参数 机制
2019/12/21 Python
python 实现rolling和apply函数的向下取值操作
2020/06/08 Python
Python优秀开源项目Rich源码解析的流程分析
2020/07/06 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
python反扒机制的5种解决方法
2021/02/06 Python
兰蔻美国官网:Lancome美国
2017/04/25 全球购物
新闻专业本科生的自我评价分享
2013/11/20 职场文书
给孩子的新年寄语
2014/04/08 职场文书
本科生求职信
2014/06/17 职场文书
出国留学英文自荐信
2015/03/25 职场文书
html实现弹窗的实例
2021/06/09 HTML / CSS
Redis中缓存穿透/击穿/雪崩问题和解决方法
2021/12/04 Redis
一文弄懂MySQL索引创建原则
2022/02/28 MySQL