我有一个名为 $ 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";
}
答案 0 :(得分:4)
您可以无条件地执行此操作:
$res = ucwords(str_replace('_', ' ', $day_price));
有关详细信息,请参阅ucwords
中的str_replace和PHP 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 ) );
答案 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';
但是在为一些保存的代码行交换可读性(因此可维护性)时我会小心。