2014-03-14 25 views
0

我有一個功能,如何在函數的參數中使用php三元運算符?

abc(string $x, bool $y) 

我如何使用三元運算函數調用表達式裏面?我試過,但給了

意外T_RETURN錯誤

代碼:

abc('Hello', return (1==1)?true:false); 
+1

該錯誤提到了return語句,而不是三元運算符。 – mario

+1

使用此'abc('Hello',(1 == 1?true:false));' – dhidy

+0

刪除'return'並且它將工作 – Blu

回答

4

在像PHP命令式語言,return只是用來從一個函數返回。我們稱之爲return聲明之類的東西,因爲它們是一個在函數體中聲明的東西。另一方面,具有數值或評價爲數值的東西,如數字2或表達式2 + 5稱爲表達式

你能想到的return,以此來表達(即"hello, world!")轉換成行動(即return "hello,world!"

你可以這樣想名詞性從句表達(即「石頭」)和像行動一樣的陳述(例如,「把磐石給你的老闆」)。

在這種情況下,PHP與大多數命令式語言一樣,期望您只使用表達式作爲函數的參數。

想一想 - 將動作作爲參數傳遞給函數或將兩個動作加在一起意味着什麼?

在你有的代碼中,你想調用abc,第一個參數設置爲'Hello',第二個設置爲表達式(1 == 1)?true:false的值。在這種情況下,你不需要return語句,因爲(1==1)?true:false已經是一個表達式,所以你可以這樣做:

abc('Hello', (1==1)?true:false); 
2

你不需要return那裏。嘗試更換以上

abc('Hello', (1==1)?true:false); 
0

試試這個

abc('Hello', $y = (1==1)?true:false); 

    function abc($x, $y) 
    { 
    echo $x." ".$y; 
    } 

輸出線:

Hello 1 
0

由於$y已經被認爲是可以不需要三元運算符在布爾你的來電。三元運算符使用布爾值在兩個其他值之間進行選擇;如果其他值僅爲truefalse那麼該語句是多餘的。你可以簡單地寫:

abc('Hello', 1==1);