将索引转换为指定字符串的清洁方法?

Pal*_*azk 2 php switch-statement

我能以更清洁的方式实现这一目标吗?会真的被批评.

    switch($vocation) {

        case 1: $vocation = "Sorcerer";        break;
        case 2: $vocation = "Druid";           break;       
        case 3: $vocation = "Paladin";         break;           
        case 4: $vocation = "Knight";          break;           
        case 5: $vocation = "Master Sorcerer"; break;           
        case 6: $vocation = "Elder Druid";     break;           
        case 7: $vocation = "Royal Paladin";   break;           
        case 8: $vocation = "Elite Knight";    break;

    }
Run Code Online (Sandbox Code Playgroud)

谢谢!

并抱歉标题无法找出更好的一个

not*_*oop 10

您可以使用数组而不是switch语句.

$vocations = array("Sorcerer", "Druid" ...);
$vocationStr = $vocations[$vocation - 1];
Run Code Online (Sandbox Code Playgroud)

要么

$vocations = array(1 => "Sorcerer", 2 => "Druid" ...);
$vocationStr = $vocations[$vocation];
Run Code Online (Sandbox Code Playgroud)

就个人而言,我反对重用$ vocation来引用两种类型(整数和字符串),因为它们很可能是程序中的两个不同概念.

我还建议为这些值创建一个枚举类型,但这取决于上下文.