在php中的变量和函数名前加&符号的意思

Codex微软商店安装失败:证书、Runtime与开发模式三重修复指南 Windows应用商店安装失败本质是系统级信任与运行环境问题,核心涉及数字签名验证、Windows App Runtime版本兼容性及开发者模式权限配置。当应用包(如Codex)使用Azure签名证书时,若系统缺失Microsoft Root Certificate Authority 2011等根证书,将触发0x80073D02错误;而Runtime版本过低或AppInstallerService未启用,则导致0x80073CF9与cc switch local proxy failed等典型报错。这类问 阅读详情
在PHP中&符号即传的是变量的引用而不是拷贝,引用意味着用不同的名字访问同一个变量内容。这并不像 C 的指针,它们是符号表别名。注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字。最接近的比喻是 Unix 的文件名和文件本身 - 变量名是目录条目,而变量内容则是文件本身。引用可以被看作是 Unix 文件系统中的紧密连接。
PHP 的引用允许你用两个变量来指向同一个内容。意思是,当你这样做时:
<?php
$a =&$b
?>
这意味着 $a 和 $b 指向了同一个变量。
注: $a 和 $b 在这里是完全相同的,这并不是 $a 指向了 $b 或者相反,而是 $a 和 $b 指向了同一个地方。
同样的语法可以用在函数中,它返回引用,以及用在 new 运算符中(PHP 4.0.4 以及以后版本):
<?php
$bar =& new fooclass();
$foo =& find_var ($bar);
?>
注: 不用 & 运算符导致对象生成了一个拷贝。如果你在类中用 $this,它将作用于该类当前的实例。没有用 & 的赋值将拷贝这个实例(例如对象)并且 $this 将作用于这个拷贝上,这并不总是想要的结果。由于性能和内存消耗的问题,通常你只想工作在一个实例上面。
尽管你可以用 @ 运算符来关闭构造函数中的任何错误信息,例如用 @new,但用 &new 语句时这不起效果。这是 Zend 引擎的一个限制并且会导致一个解析错误。
引用做的第二件事是用引用传递变量。这是通过在函数内建立一个本地变量并且该变量在呼叫范围内引用了同一个内容来实现的。例如:
<?php
function foo (&$var) {
$var++;
}
$a=5;
foo ($a);
?>
将使 $a 变成 6。这是因为在 foo 函数中变量 $var 指向了和 $a 指向的同一个内容。更多详细解释见引用传递。
引用做的第三件事是引用返回。
引用不是什么
如前所述,引用不是指针。这意味着下面的结构不会产生你预期的效果:
<?php
function foo (&$var){
$var =& $GLOBALS["baz"];
}
foo($bar);
?>
这将使 foo 函数中的 $var 变量在函数调用时和 $bar 绑定在一起,但接着又被重新绑定到了 $GLOBALS["baz"] 上面。不可能通过引用机制将 $bar 在函数调用范围内绑定到别的变量上面,因为在函数 foo 中并没有变量 $bar(它被表示为 $var,但是 $var 只有变量内容而没有调用符号表中的名字到值的绑定)。
引用传递
你可以将一个变量通过引用传递给函数,这样该函数就可以修改其参数的值。语法如下:
<?php
function foo (&$var) {
$var++;
}
$a=5;
foo ($a);
// $a is 6 here
?>
注意在函数调用时没有引用符号 - 只有函数定义中有。光是函数定义就足够使参数通过引用来正确传递了。
以下内容可以通过引用传递:
变量,例如 foo($a)
New 语句,例如 foo(new foobar())
从函数中返回的引用,例如:
<?php
function &bar() {
$a = 5;
return $a;
}
foo(bar());
?>
详细解释见引用返回。
任何其它表达式都不能通过引用传递,结果未定义。例如下面引用传递的例子是无效的:
<?php
function bar(){ // Note the missing &
$a = 5;
return $a;
}
foo(bar());
foo($a = 5) // 表达式,不是变量
foo(5) // 常量,不是变量
?>
这些条件是 PHP 4.0.4 以及以后版本有的。
引用返回
引用返回用在当你想用函数找到引用应该被绑定在哪一个变量上面时。当返回引用时,使用此语法:
<?php
function &find_var ($param){
/* ...code... */
return $found_var;
}
$foo =& find_var ($bar);
$foo->x = 2;
?>
本例中 find_var 函数所返回的对象的属性将被设定(译者:指的是 $foo->x = 2; 语句),而不是拷贝,就和没有用引用语法一样。
注: 和参数传递不同,这里必须在两个地方都用 & 符号 - 来指出返回的是一个引用,而不是通常的一个拷贝,同样也指出 $foo 是作为引用的绑定,而不是通常的赋值。
取消引用
当你 unset 一个引用,只是断开了变量名和变量内容之间的绑定。这并不意味着变量内容被销毁了。例如:
<?php
$a = 1;
$b =& $a;
unset ($a);
?>
不会 unset $b,只是 $a。
再拿这个和 Unix 的 unlink 调用来类比一下可能有助于理解。
引用定位
许多 PHP 的语法结构是通过引用机制实现的,所以上述有关引用绑定的一切也都适用于这些结构。一些结构,例如引用传递和返回,已经在上面提到了。其它使用引用的结构有:
global 引用
当用 global $var 声明一个变量时实际上建立了一个到全局变量的引用。也就是说和这样做是相同的:
<?php
$var =& $GLOBALS["var"];
?>
这意味着,例如,unset $var 不会 unset 全局变量。
$this
在一个对象的方法中,$this 永远是调用它的对象的引用
解读Autoware.Universe规划模块:Behavior Path Planner Behavior Path Planner是一个基于行为生成不同形态路径的路径规划器,负责生成 基于交通状况的路径(path), 车辆可以移动的可行驶区域(drivable area)(在路径消息中定义), 将被发送到车辆接口的转向信号(turn signal) 命令。 阅读详情

相关推荐

搭建PX4开发系统(Ubuntu 22.04)

本文是《从零开始学 PX4 无人机开发》系列第二篇,适合开发者在 Ubuntu 系统下快速搭建 PX4 编译与仿真环境,支持 QGroundControl、Gazebo、MAVSDK 等完整工具链。

qq_15856721的博客 4198

C++ 函数指针的用法

从语法上讲,有两种不兼容的函数指针形式: (1)    指向C语言函数和C++静态成员函数的函数指针 (2)    指向C++非静态成员函数的函数指针 不兼容的原因是因为在使用C++非静态成员函数的函数指针时,需要一个指向类的实例的this指针,而前一类不需要。 3.1 定义一个函数指针 指针是变量,所以函数指针也是变量,因此可以使用变量定义的方式来定义函数指针,对于普通的指针,可以这么

u013161016的专栏 1361

Python爬虫实战:用BeautifulSoup和Pandas轻松抓取去哪儿网景点数据(附完整代码)

本文详细介绍了如何使用Python的BeautifulSoup和Pandas库构建一个高效的旅游数据爬虫,从去哪儿网抓取景点数据。内容涵盖环境准备、网页结构分析、核心代码实现、反爬策略以及数据清洗与存储,提供完整代码示例,帮助开发者快速掌握数据采集技术。

river的博客 357

函数名称前面加引用“&”或指针符号“*”的意思

学习笔记: (一) 函数名称前面加引用符号“&”,代表该函数返回值类型是引用。 如:int &operate+(...); (二) 函数名称前面加指针符号“*”,代表它是函数指针。 函数指针是一个指向函数的指针,函数指针表示一个函数的入口地址。使用函数指针的好处就是在处理“在运行时根据数据的具体状态来选择相应的处理方式”这种需求时更加灵活。 定义一个函数指针 指针是变量,所

qq_38124695的博客 4万+

Uds诊断自动化(CANoe.diva应用)

(7)其他配置选择可以保持默认(一般情况下,DTC以及31服务、下载服务需要另外测试)。(1)打开CANoe.Diva软件,并新建Diva工程。(2)设置工程名和保存位置;在"Specification file"(3)测试案例打开后的界面如下,可以对要进行测试的案例进行勾选,(可查看下角的进度条)后;(3)等待DIva工程的生成;(4)接下来是修改Diva工程选项,如下图点击。,如用例间的时间间隔、复位等待时间等。,即可打开导入的测试工程。,即可生成测试用例。(1)在CANoe中。

LIUJIAAAAA的博客 3435

用LightRAG+Ollama搭建本地知识库:从文档上传到智能问答的完整流程

本文详细介绍了如何利用LightRAG与Ollama构建企业级本地知识库,涵盖从文档预处理到智能问答的完整流程。通过实战案例展示,该方案能高效处理海量文档,实现语义搜索与知识图谱关联分析,显著提升信息检索效率。特别适合金融、医疗等领域的技术团队快速搭建智能知识管理系统。

weixin_42535461的博客 187

c/c++变量前加*和加&的区别

1.* 变量前加*号,只有在变量为指针情况下才是合法的 当*用于定义时,是标明该变量为指针类型 除此以外,*的作用是取值。 C++中的指针可以理解为一个地址的值,*用于取值时就是取出改地址中存储的值 2.& &:一个是取地址符作用,另一个是引用 注意:&是取址符号。但&也可以有另一个用法,就是是其它变量的别名,如int &a=b;此时a就是b,b就是a,改变a的值

人生起猿 3万+

Obsidian笔记同步实战:基于Git的私有化部署与自动化管理

本文详细介绍了如何利用Git为Obsidian笔记构建私有化、自动化且免费的同步方案。通过安装配置Git与Obsidian-git插件,结合Gitee等远程仓库,实现笔记的版本管理、多设备同步与自动备份,打造安全可靠的知识管理体系。

y7z8a的博客 272

php function 定义时函数名前加&符号的意义

问题:php在声明函数时,函数名前面的&amp;符号有什么用? 一直想不通.很多帖子说类似于变量的$a=&amp;$b,但是$b在声明的时候前面可没有加&amp;符号啊?那么这个函数名前面加&amp;有什么用呢? 很多人看的都是网上的例子,先用网上例子试一下: function&amp;test(){static$b=0;//声明一个静态变量$b...

lxw1844912514的博客 1457

JEDEC JESD51-14 瞬态双界面测试方法详解

(瞬态双界面测试方法,用于测量具有单路径热流的半导体器件的结到壳热阻 RθJC,包括结到壳顶部 RθJCT 和结到壳底部 RθJCB)。该标准于 2010 年发布(版本 JESD51-14.1),旨在提供一种准确、可重复的瞬态方法来测量功率半导体器件(如 MOSFET、IGBT)的结到壳热阻(RthJC),取代传统的稳态测量方法(如 MIL-STD-883E METHOD 1012.1)。方法,通过比较两种不同热界面材料(TIM)下的瞬态温度响应曲线,提取 RthJC,而无需直接测量壳温(Tc)。

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 605

g2o&PCL 四阶多项式拟合

g2o&PCL 四阶多项式拟合

dayuhaitang1的博客 139

php变量名前必须加什么符号,php中引用变量和函数名前加&符号

在php中我们常看到在在php变量前面加个&amp;符号,这个即是php中引证符号了,它可以用于各种变量、函数、目标了下面我来给各位详细介绍php&amp;符号用法.在 PHP 中引证意味着用不相同的名字访问同一个变量内容.这并不像 C 的指针,它们是符号表别号.注意在 PHP 中,变量名和变量内容是不相同的,因而相同的内容可以有不相同的名字.PHP的引证是经过在变量名或者函数名前加&amp;符号...

weixin_34927903的博客 1729

【以太网硬件十九】SGMII到底能不能直接出光模块?

详细解释为什么SGMII可以直接出光模块及其使用限制

highman110的博客 1万+

php 函数变量 前加,php中引用(变量和函数名前加&符号)用法

本文章来给大家介绍在php中我们常看到在在php变量前面加个&amp;符号,这个就是php中引用符号了,它可以用于各种变量、函数、对象了下面我来给各位详细介绍php&amp;符号用法.在 PHP 中引用意味着用不同的名字访问同一个变量内容.这并不像C 的指针,它们是符号表别名.注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字.PHP的引用是通过在变量名或者函数名前加...

weixin_30983965的博客 1264

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

php 函数前加 的意义,php function 定义时函数名前加&符号的意义

问题:php在声明函数时,函数名前面的&amp;符号有什么用?一直想不通.很多帖子说类似于变量的$a=&amp;$b,但是$b在声明的时候前面可没有加&amp;符号啊?那么这个函数名前面加&amp;有什么用呢?很多人看的都是网上的例子,先用网上例子试一下:function&amp;test(){static$b=0;//声明一个静态变量$b=$b+1;return$b;}$a=...

weixin_33402252的博客 266

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

在php中的变量和函数名前加&amp;符号的意思

http://www.phpzixue.cn/detail785.shtml在php中的变量和函数名前加&符号的意思: 在PHP中&符号即传的是变量的引用而不是拷贝,引用意味着用不同的名字访问同一个变量内容。这并不像 C 的指针,它们是符号表别名。注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字。最接近的比喻是 Unix 的文件名和文件本身 - 变量名是目录

张同光 (Tongguang Zhang):Hello everyone ! 805

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

php中什么是函数函数的意义是什么,php function 定义时函数名前加&符号的意义

看了很多帖子,但是都不能理解,又去看了很多资料,终于名白了.记下备忘.问题:php在声明函数时,函数名前面的&amp;符号有什么用?一直想不通.很多帖子说类似于变量的$a=&amp;$b,但是$b在声明的时候前面可没有加&amp;符号啊?那么这个函数名前面加&amp;有什么用呢?很多人看的都是网上的例子,先用网上例子试一下:function&amp;test(){static$b=0;//...

weixin_31366207的博客 327

php 调用变量方法名,php中引用(变量和函数名前加&符号)用法

本文章来给大家介绍在php中我们常看到在在php变量前面加个&amp;符号,这个就是php中引用符号了,它可以用于各种变量、函数、对象了下面我来给各位详细介绍php&amp;符号用法.在 PHP 中引用意味着用不同的名字访问同一个变量内容.这并不像 C 的指针,它们是符号表别名.注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字.PHP的引用是通过在变量名或者函数名前加...

weixin_39928993的博客 881

php定义function时,函数名前加“&”符号是什么意思?

在PHP中&符号即传的是变量的引用而不是拷贝,引用意味着用不同的名字访问同一个变量内容。这并不像 C 的指针,它们是符号表别名。注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字。最接近的比喻是 Unix 的文件名和文件本身 - 变量名是目录条目,而变量内容则是文件本身。引用可以被看作是 Unix 文件系统中的紧密连接。  PHP 的引用允许你用两个变量来指向同一

随心所欲 2660
上一篇: js常用字符串处理函数
下一篇: 解除phpMyAdmin 导入大型MySQL数据库文件大小限制
chensong0708
博客等级 码龄17年 13粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值