2016-12-14 63 views
0

当我尝试调用需要引用作为参数的函数时,出现问题。当我将任何变量传递给它时,函数完全正常工作,但是如果我通过一个变量传递一个变量,和:if/else操作符,我得到错误Cannot pass parameter 1 by reference通过引用使用?:运算符PHP传递变量

函数看起来如下:

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

现在我试图调用函数方式如下:

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

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

但是,如果我这样做$this->testFunction($yes)它的工作。我在这里做错了什么?我能否使用'?'和':',如果不是,我的替代品是什么,以确保testFunction将得到正确的数据的参考?

+2

那是因为你没有传递变量,但它的价值..这样的词表达si评估第一和传递的参数是一个字符串不是一个变量 –

回答

2

这是因为您没有传递变量而是其值。表达式si首先被评估,并且传递的参数是一个字符串而不是一个变量。

你可以不喜欢这样,而不是:

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

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

或者只是定义变量'$ boolean = true? $ yes:$ no;'然后将它传递给函数'$ this-> testFunction($ boolean);' – Yupik

+1

您可以这样做,但传入的引用将是'$ boolean'的引用而不是'$ yes'或'$ no'。所以,如果你想影响函数内部的任何2个变量,它将不会工作 –

+1

哦,我认为它评估后,它会简单地把变量,而不是它的价值。我希望我不必做一个实际的if/else,而只需在函数调用中进行评估。 – QuestionsAlot