如何以改进的方式完成此代码

时间:2015-06-30 09:01:15

标签: php switch-statement conditional-statements

我想用适当的代码替换这里的switch语句。我需要建议以改进的方式这样做。

switch(true) {
    case ($value === 'test1'):
    $testArray['class'] = 'incomplete';
    return $this->icon(
        'test_0.png',
        $testArray
    );
    case ($value === 'test2'):
    $testArray['class'] = 'progress';
    return $this->icon(
        'test_1.png',
        $testArray
    );
    case ($value === 'test3'):
    $testArray['class'] = 'complete';
    return $this->icon(
        'test_3.png',
        $testArray
    );
}

2 个答案:

答案 0 :(得分:1)

尝试使用$value'incomplete''progress'设置'complete'。将imgs重命名为incomplete.pngprogress.pngcomplete.png

然后这样做:

$testArray['class'] = $value; 
return $this->icon(
    $value.'.png',
    $testArray
);

这一切都取决于你设置$value的方式。但是,如果你能够以正确的方式设置它,它会更短,更容易使用。

答案 1 :(得分:0)

改进了switch语句,

    switch($value) {
    case 'test1':
        $testArray['class'] = 'incomplete';
        $image = 'test_0.png';
        break;
    case 'test2':
        $testArray['class'] = 'progress';
        $image = 'test_1.png';
        break;
    case 'test3':
        $testArray['class'] = 'complete';
        $image = 'test_3.png';
        break;
    default :
        break;
}
return $this->icon($image,$testArray);

或使用if statment,

if ($value == 'test1') {
    $testArray['class'] = 'incomplete';
    $image = 'test_0.png';
} elseif ($value == 'test2') {
    $testArray['class'] = 'progress';
    $image = 'test_1.png';
} else {
    $testArray['class'] = 'complete';
    $image = 'test_3.png';
}

return $this->icon($image,$testArray);