2012-03-17 2 views
0

У меня есть переменная $ day_price, который может содержать одно из двух значений - либо «weekday_price» или «weekend_price». Если я вторя $ day_price однако я хотел бы значение weekday_price быть вторят в Weekday Цены и значение weekend_price быть эха в выходной цены.Короткие если-иначе заявления в 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);' (Тогда это действительно не имеет значения.) –

+0

Я бы предложил новый заголовок для потомков Google, но я не могу придумать хороший. –

ответ

4

Вы можете сделать это без условий:

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

Для получения дополнительной информации см ucwords и str_replace в PHP Manual

2

Дословный ответ был бы

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

однако, есть способ избежать такого перевода, я bel 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'; 

Но я был бы осторожен при обмене читаемость (поэтому ремонтопригодности) для нескольких сохранённых строки кода.

Смежные вопросы