【问题标题】:How this code can be done in an improved manner [closed]如何以改进的方式完成此代码[关闭]
【发布时间】:2015-09-16 23:47:17
【问题描述】:

我想在这里用正确的代码替换 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
    );
}

【问题讨论】:

  • 使用 if , else if 和 else
  • 你为什么要这样做而不是switch($value) { case 'test1': ...
  • 看起来更适合:codereview.stackexchange.com

标签: php switch-statement conditional-statements


【解决方案1】:

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

然后这样做:

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

这一切都取决于您设置$value 的方式。但是,如果您设法以正确的方式进行设置,那么使用起来会更短且更容易。

【讨论】:

    【解决方案2】:

    改进的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 语句,

    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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-25
      • 2012-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-05
      • 1970-01-01
      • 2010-10-18
      相关资源
      最近更新 更多