2012-03-17 152 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'; 

但交换的保存几可读性(因此可维护性)的时候,我会小心代码行。