You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP7.1引用参数传null触发报错,如何实现目标参数传递?

解决PHP引用传参时无法直接传递null的问题

这个坑我之前踩过!你遇到的错误“Only variables can be passed by reference”,本质是PHP的语法规则限制:引用传参的位置只能传入变量,不能直接传字面量(比如null),哪怕函数的默认值就是null也不行。

下面给你几个可行的解决办法,你可以根据自己的场景选:

1. 把null赋值给变量后传递

这是最通用的办法,不管PHP版本多少都能用:

// 先把null存到变量里
$tempNull = null;
// 再把变量传给第一个参数
myfunction($tempNull, $something);

因为现在传递的是变量,符合引用传参的要求,同时函数本身能处理null,完全满足你的需求。

2. 移除第一个参数的引用(如果允许的话)

如果你的函数不需要修改外部变量的值(也就是引用传参不是必须的),可以直接把第一个参数的&去掉,改成普通参数:

function myfunction($first = null, $second = null) { 
    // 原来的执行逻辑不变
}
// 现在直接调用就不会报错了
myfunction(null, $something);

注意:如果函数内部需要修改$first并让外部变量同步更新,那这个办法就不能用,得用第一种。

3. 使用命名参数(PHP 8.0+适用)

如果你用的是PHP 8.0及以上版本,命名参数是最优雅的解决方案——直接指定第二个参数的值,第一个参数自动使用默认的null:

myfunction(second: $something);

这种写法清晰直观,还避免了额外变量的创建,推荐在高版本PHP中使用。

内容的提问来源于stack exchange,提问作者Roland Seuhs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:57:42