2016-12-14 129 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