PHP使用?:运算符通过引用传递变量

时间:2016-12-14 09:14:27

标签: php

当我尝试调用期望引用作为参数的函数时,我遇到了问题。当我将任何变量传递给它时,该函数完全正常,但是如果我通过?的方式将变量传递给它。并且:if / else运算符,我收到错误Cannot pass parameter 1 by reference

该功能如下所示:

public function testFunction(&$var) {
    //It does nothing.
}

现在我试图通过以下方式调用该函数:

$yes = 'yes';
$no = 'no';

$this->testFunction(
    TRUE ? $yes : $no
);

但是如果我做$this->testFunction($yes)它确实有效。我在这做错了什么?我可以不用'?'和':'为此,如果没有,我的替代方案是确保testFunction能够获得对正确数据的引用?

1 个答案:

答案 0 :(得分:2)

那是因为你没有传递变量而是传递它的值。首先计算表达式si,传递的参数是字符串而不是变量。

你可以这样做:

$yes = 'yes';
$no = 'no';

if (true) {
    $this->testFunction($yes);
} else {
    $this->testFunction($no);
}