当我尝试调用期望引用作为参数的函数时,我遇到了问题。当我将任何变量传递给它时,该函数完全正常,但是如果我通过?的方式将变量传递给它。并且: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
能够获得对正确数据的引用?
答案 0 :(得分:2)
那是因为你没有传递变量而是传递它的值。首先计算表达式si,传递的参数是字符串而不是变量。
你可以这样做:
$yes = 'yes';
$no = 'no';
if (true) {
$this->testFunction($yes);
} else {
$this->testFunction($no);
}