3

我有这样的功能(使用 PHP 7.1):

function myfunction(&$first = null, $second = null)
{   // do something
}

我想要实现的是传递 null 作为第一个参数并传递一些东西作为第二个参数:

myfunction(null, $something);

当我这样做时,我得到“只有变量可以通过引用传递”错误。

但是当然,null 是第一个参数的默认值,因此该函数被设计为将 null 作为第一个参数处理。

有没有办法做到这一点?

4

2 回答 2

6

您可以发送未声明的变量,而不是发送null,例如(DEMO):

<?php
function myfunction(&$first = null, $second = null)
{   // do something
}
myfunction($null, $something);

这将用于执行函数而不破坏您的代码。

PHP 8+:

在 PHP 8 中,我们有Named Parameters$first ,所以如果我们不想传递参数(DEMO ) ,我们甚至不需要传递参数:

<?php
function myfunction(&$first = null, $second = null)
{   // do something
}
myfunction(second: $something);
于 2018-04-05T11:25:47.600 回答
0

不可能。如果函数有多个参数,则引用不能作为第一个参数为空。

以下是一些可能性:

function func($a = null, &$b = null) {}
function funcb(&$a, $b = null) {}

调用:

$a = null;
func($a, $b)
funcb($a)
于 2018-04-05T11:25:48.700 回答