2012-03-01 33 views
6

如果某個變量爲真,我需要將附加數據添加到字符串,如果沒有,我不需要追加任何內容。目前,我正在做:你是否必須在三元運算符PHP中包含一個錯誤的值?

$string = (condition()) ? 'something'.$string.'something' : $string; 

有沒有辦法跳過添加虛假選項中三元操作?如果條件爲假,那麼說$ string = $ string似乎很浪費。

回答

3

你不能跳過它。您可以重新編寫爲一行if條件:

if (condition()) $string = 'something'.$string.'something'; 
+0

這是我的下一個選擇,但希望它可以完成。感謝您的確認。 – Ayub 2012-03-01 01:15:13

0

不,無法跳過它。如果你想跳過虛假位,回到if方法:

if (condition()) $string = 'something' . $string . 'something'; 

三元方法只是一個短暫的手if聲明反正。如果您可以使if語句短而又不犧牲可讀性(如上例所示),那麼您應該考慮它。

不過,說實話,我甚至格式化,使其更可讀性

if (condition()) 
    $string = 'something' . $string . 'something'; 

除非你急缺顯示器的高度,那將是更容易理解一覽:-)

1

是的,您必須。把三元運算符看作一個函數。你會想到會的行爲,如果你做了這樣的事情,但不想進行分配,如果評估爲falsecondition()

$string = ternary(condition(), $yesValue, $noValue); 

沒有辦法,你可以放棄分配到變量$string如果condition()的計算結果爲false。

-1

不。這是三元組的關鍵。如果你不想要一個錯誤的值,爲什麼不只是讓condition()返回你需要的值呢?

喜歡的東西:

$string = condition($string); 

function condition($string){ 
    if($string == 'whatever') 
    { 
     $string = 'something'.$string.'something'; 
    } 

    return $string; 
} 

我可以看到其他人已經打敗我,所以這裏是三元文檔:

http://php.net/manual/en/language.operators.comparison.php

+0

,因爲他可能只想顯示它是否爲真,如果是虛假的則不顯示。 – 2015-11-11 22:10:38

+0

@hanoncs - 你剛纔建議什麼?如果他不想定義錯誤的處理,那麼不要使用三元樸素簡單。他的問題沒有「可能」。很顯然,他只想追求真實,但認爲自我重新宣佈是虛假的浪費。所以,如果這是一個問題,他正在運行一個函數來檢查,爲什麼不直接說$ string = condition()並讓該函數給出字符串的最終結果? – 2015-11-12 16:01:42

相關問題