2015-11-02 99 views
0

我有一段代碼,我想將它轉換爲三元運算符。誰能幫忙?它有1條if和2條件,所以我很難轉換它。這是我的代碼。如何將此if else語句轉換爲三元運算符?

if ($this->session->data['desired_service']==1){ 
    echo 'Home Delivery'; 
} else if ($this->session->data['desired_service']==2){ 
    echo 'Take Away'; 
} else if ($this->session->data['desired_service']==3){ 
    echo 'DinIN'; 
} 

這是我迄今使用的代碼。

$service = ($this->session->data['desired_service']== 1) ? "Home Delivery" : ($this->session->data['desired_service'] == 2) ? "Take Away" : ($this->session->data['desired_service'] == 3) ? "DinIN"; 

但它給了我一個語法錯誤。

+2

我只有一件事要說:不要。它使你的代碼難以閱讀和醜陋。 – Daan

+1

不要......嵌套的三元組不直觀,難以閱讀....如果你現在這樣做,你會在6周內詛咒自己,當你需要改變它 –

+0

你可以去開關案件,但嵌套三元將很難理解... –

回答

2
echo ($this->session->data['desired_service'] == 3) ? 'DinIN' : (($this->session->data['desired_service']==1) ? 'Home Delivery' : ($this->session->data['desired_service'] == 2) ? 'Take Away' : ''); 

說明:

使用嵌套三元運算符。

If variable equal to 3, print 'DinIN'  
else : two cases: 
if 1 : Home Delivery 
else : Take Away 

演示:

if value is 1

If value is 2

if value is 3

另一種解決方案

使用預定義的數組:

獲取陣列中的所有選項,並添加

1,2和3鍵。使用isset和變量檢查數組。

如果已設置,則打印它,否則爲空。

目的解決了。

<?php 
$arr = array(); 
$arr[1] = 'Home Delivery'; 
$arr[2] = 'Take Away'; 
$arr[3] = 'DinIN'; 
echo isset($arr[$this->session->data['desired_service']]) ? $arr[$this->session->data['desired_service']] : ''; 
?> 
+1

我希望值只能在1,2和3上。任何其他值都應該產生空值。那可能嗎? –

+0

回答更新,請檢查。它將適用於您的查詢。 – Pupil

+1

完美!謝謝@Pupil –

3

這不是什麼時候使用三元運算符的好例子。就個人而言,查看您的數據 - 我會使用switch語句,因爲它會更容易閱讀並添加更多選項。

switch($this->session->data['desired_service']){ 

    case '1': 
     $service = "Home Delivery"; 
     break; 

    case '2': 
     $service = "Take Away"; 
     break; 

    case '3': 
     $service = "DinIN"; 
     break; 

} 
+0

在任何情況下,答案總是最後的選擇。 :( –

+0

不幸的是,這是行不通的。三元運算符在PHP中是左聯想的,這意味着這將評估「從右到左」,你必須使用缺少的。 – hanzi

+0

你的開關速度比我快一點...不錯的+1 –

相關問題