Как мне проще отобразить целочисленное значение в строку в PHP? - PullRequest
3 голосов
/ 29 апреля 2009

Как я могу перефакторизовать следующий код, чтобы сделать его более кратким и более понятным?

if ($row['vocation'] == 1) $vocation = "sorcerer";
if ($row['vocation'] == 2) $vocation = "druid";
if ($row['vocation'] == 3) $vocation = "paladin";
if ($row['vocation'] == 4) $vocation = "knight";

if ($row['vocation'] == 5) $vocation = "master sorcerer";
if ($row['vocation'] == 6) $vocation = "elder druid";
if ($row['vocation'] == 7) $vocation = "royal paladin";
if ($row['vocation'] == 8) $vocation = "elite knight";
else $vocation = "none";

Ответы [ 5 ]

17 голосов
/ 29 апреля 2009

Я бы порекомендовал использовать массив, например так:

static $vocations = array(
  1 => 'sorceror',
  2 => 'druid',
  3 => 'paladin',
  4 => 'knight',
  5 => 'master sorceror',
  6 => 'elder druid',
  7 => 'royal paladin',
  8 => 'elite knight',
  );

$vocation = 
  isset($vocations[$row['vocation']]) ? $vocations[$row['vocation']] : 'none';
2 голосов
/ 29 апреля 2009

Вот пример использования переключателя для этого:

switch ($row['vocation']) {
    case 1:
        $vocation = "sorcerer";
        break;
    case 2: 
        $vocation = etc..
    default:
        $vocation = "none";
}

Это обычное явление для многих языков, таких как C, Java, C # и многих других.

1 голос
/ 29 апреля 2009

Следующий кусок может быть немного лучше. 8 элементов в порядке, но что, если список содержит 1000.

$list = array("sorcerer", "druid", ...);

$vocation = "none";

if($row['vocation'] <= count($list)){
    $vocation = $list[$row['vocation'] - 1];
}
0 голосов
/ 29 апреля 2009

Я бы использовал предложение с массивом и использовал бы константы для представления целочисленных значений следующим образом:

define('VOCATION_SORCEROR', 1);
define('VOCATION_DRUID',    2);
define('VOCATION_PALADIN',  3);

$vocations = array(
  VOCATION_SORCEROR => 'sorceror',
  VOCATION_DRUID =>    'druid',
  VOCATION_PALADIN =>  'paladin'
);
0 голосов
/ 29 апреля 2009

Начните ваш проект правильно, используйте const сейчас, чтобы представить эти числовые константы, и избавьте себя от головной боли. (в дополнение к использованию switch / case, как предлагали другие)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...