PHP中的if-else语句

时间:2012-03-17 19:51:25

标签: php

我有一个名为 $ day_price 的变量,它可以包含两个值中的一个 - " weekday_price "或" weekend_price "。如果我回复 $ day_price ,但我希望将 weekday_price 的值回显为工作日价格以及的值> weekend_price 周末价格来回应。

如果不编写像这样的长if-else语句,我怎样才能实现这个目标?

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

6 个答案:

答案 0 :(得分:4)

您可以无条件地执行此操作:

$res = ucwords(str_replace('_', ' ', $day_price));

有关详细信息,请参阅ucwords

中的str_replacePHP Manual

答案 1 :(得分:3)

没有直接的方法(这是所有编程语言的“问题”)。

例如,您可以使用键值对构建一个数组,其中键为weekend_price,值为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 :(得分:2)

字面答案是

$trans = array (
  "weekday_price" => "Weekday Price",
  "weekend_price" => "Weekend Price",
);
echo $trans[$day_price];
但是,我相信,有一种方法可以避免这种翻译。

答案 3 :(得分:1)

echo ucwords( str_replace( '_', ' ', $date_check ) );

请参阅ucwords in PHP Manual

答案 4 :(得分:1)

如果要在不同的地方使用它,可以定义一个关联数组:

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

并使用它:

echo $texts[$day_price];

答案 5 :(得分:1)

如果它只是周末或工作日,你可以这样做:

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

但是在为一些保存的代码行交换可读性(因此可维护性)时我会小心。