改进了许多case switch语句

时间:2011-06-05 08:38:11

标签: php

我正在研究一些我自己没有写过的代码示例,我发现这个函数看起来像是写得不好,或者至少效率不高。你能提出改进方法吗?我认为这可能适用于关联数组,但不知道如何。

可以重写其他任何方式吗?

    $op = '';
    switch($style) {
        case 'f':
        case 'F': {
            $op = 'f';
            break;
        }
        case 'f*':
        case 'F*': {
            $op = 'f*';
            break;
        }
        case 'B':
        case 'FD':
        case 'DF': {
            $op = 'B';
            break;
        }
        default: {
            if (!empty($default)) {
                $op = $this->dosomething($default, '');
            } else {
                $op = '';
            }
        }
    }
    return $op;

2 个答案:

答案 0 :(得分:3)

要使用关联数组,您需要执行以下操作:

$styles = array(
    'S' => 'S',
    'D' => 'S',
    's' => 's',
    'd' => 's',
    ... etc ...
);

if (isset($styles[$op])) {
    return $styles[$op];
} elseif (!empty($default)) {
    return $this->getPathPaintOperator($default, '');
} else {
    return '';
}

答案 1 :(得分:0)

无需添加额外的花括号,您可以更改

 case 'df': {
        $op = 'b';
        break;
    }

 case 'df':
        $op = 'b';
        break;