在PHP中,函数参数可以通过引用传递,方法是在函数声明中的参数前面加一个符号AND,如下所示:

function foo(&$bar)
{
    // ...
}

现在,我知道这不是为了提高性能,而是为了允许函数更改通常超出其范围的变量.

取而代之的是,PHP似乎使用写入时复制来避免复制对象(可能还有数组),直到它们被更改.因此,对于不更改参数的函数,其效果应该与您通过引用传递它们的效果相同.

但是,我想知道写入时拷贝逻辑是否会在按引用传递时短路,以及这是否会对性能产生任何影响.

ETA:可以肯定的是,我假设它不会更快,而且我很清楚这不是引用的目的.所以我认为我自己的猜测是相当准确的,我只是在寻找一个真正了解幕后正在发生的事情的人的答案.在五年的PHP开发中,我总是发现,除了阅读源代码之外,很难获得有关PHP内部的高质量信息.

推荐答案

Zend引擎使用写入时复制,当您自己使用引用时,会产生一些额外的开销.不过,在 compose 本文时只能找到this mention条,the manual条中的 comments 还包含其他链接.

(编辑)Objects and references上的手册页面包含了更多关于对象变量与引用之间差异的信息.

Php相关问答推荐

使用额外的输入字段自定义WooCommerce单个产品

未在moodle上运行的计划任务

WooCommerce中仅在单一产品和产品档案页面中将小数设置为大写

在函数内部获取一致的单选按钮值以更新WordPress用户数据

EBay Inventory API createOrReplaceInventoryItem出错

PHP -多维数组到一维数组

在Laravel中修改JSON输出

将下拉 Select 的值从WooCommerce后端保存并显示到前端

在PHP 8.2 Gloogle云引擎上加载大型php文件速度缓慢

首先在WooCommerce我的帐户订单页面中移动操作按钮

如何用十进制和字母数字减go 和添加 id

在 PHP MySQL 中自动生成账单编号

Symfony:从控制器内部调用自定义命令

Windows 身份验证在 IIS 中验证什么?我可以在我的情况下禁用匿名身份验证吗?

$_SERVER 超全局变量在 PHP 中是否保证可写?

仅允许减少 WooCommerce 中已完成订单的库存数量

按数字然后按字符串对关联 PHP 数组进行排序

在 DomPDF 和 Laravel 中使用内联 css

根据数组中的文本文件编号显示星级

图像不会显示在生产中的 Laravel 应用程序中