2012-03-17 150 views
0

我有一個名爲$ day_price變量,可容納兩個值中的一個 - 無論是 「weekday_price」 或 「weekend_price」。如果我呼應$ day_price不過,我想回顯爲平日價格weekday_price價值,並可以作爲呼應週末價格weekend_price的價值。短if-else語句在PHP

如何在不編寫像這樣的長if-else語句的情況下實現此目的?

if ($day_price=="weekday_price") { 
    echo "Weekday Price"; 
} 
else if ($day_price=="weekend_price") { 
    echo "Weekend Price"; 
} 
+0

只是因爲這還沒有被顯示:'echo GetPriceTitle($ day_price);'(然後它真的沒關係) – 2012-03-17 20:00:33

+0

我會建議爲後人谷歌搜索一個新的標題,但我想不出一個好的。 – 2012-03-17 20:05:45

回答

2

字面上的答案會是

$trans = array (
    "weekday_price" => "Weekday Price", 
    "weekend_price" => "Weekend Price", 
); 
echo $trans[$day_price]; 
然而

,有一種避免這種翻譯的方式,我是貝爾ieve。

1

如果你想在不同的地方使用它,你可以定義一個關聯數組:

$texts = array('weekday_price' => 'Weekday Price', 
       'weekend_price' => 'Weekend Price'); 

,並使用類似:

echo $texts[$day_price]; 
3

有不是直接的方式(這是所有編程語言的「問題」)。

可以,例如,建立與鍵值對數組,其中的關鍵是weekend_price和價值是週末價格

$tmpArray = array(
    "weekend_price" => "Weekend Price", 
    "weekday_price" => "Weekday Price" 
); 
echo $tmpArray[$day_price]; 

否則,如果你確信你將使用「_」代替空格,並你要大寫所有的話,你可以使用這個:

echo ucwords(str_replace("_", " ", $day_price)); 

另一種解決方案(我不喜歡,但可以使用):

function ConvertWeekPrices($day_price) 
{ 
    $result = null; 
    switch($day_price) 
    { 
     case "weekend_price": 
      $result = "Weekend Price"; 
      break; 
     case "weekday_price": 
      $result = "Weekday Price"; 
      break; 
    } 
    // Do something with result if you want 
    // Do some checks if result is null 
    return $result; 
} 

然後在你的代碼:

echo ConvertWeekPrices($day_price); 

還有其它的方法,你可以使用一個數據庫表,XML文件,有無限的組合。我認爲那些2是容易接近

1

如果它永遠只能將是週末或平日,你可以這樣做:

echo ($day_price=="weekday_price") ? 'Weekday Price' : 'Weekend Price'; 

但交換的保存幾可讀性(因此可維護性)的時候,我會小心代碼行。