PHP函数

时间:2019-11-18 15:30:38

标签: php reference

有什么可靠的方法可以知道是否已传递函数引用参数?

我在堆栈溢出中看到了一些答案,这些答案建议为它提供一个默认值并检查该值,但是我已经对其进行了测试,并且它不是100%可靠的,因为您无法检查是否未使用该参数。设置,或者是否已将其设置为与默认值具有相同值的变量。

function fn (&$ref = null) {
    if ($ref === null)
        echo "ref null";
    else
        echo "ref not null";
}
$var = null;
fn($var); // ref null

function fn2 (&$ref = -1) {
    if ($ref === -1)
        echo "ref === -1";
    else
        echo "ref !== -1";
}
$var = -1;
fn2($var); // ref === -1

我正在运行PHP 7.2

1 个答案:

答案 0 :(得分:1)

您可以使用func_num_args()

检查传递给函数的参数数量
function fn (&$ref = null) {
    echo func_num_args().PHP_EOL;
    if ($ref === null)
        echo "ref null".PHP_EOL;
    else
        echo "ref not null".PHP_EOL;
}
$var = null;
fn($var);
fn();

会给予

1
ref null
0
ref null