php 切换 vs If elseif

php Switch vs If elseif

我只是想知道我是否应该在 php 中使用 'Switch' 或 'If...else if'。 (示例代码一击)。我搜索了google,但我读过的文章都有些老了。 我还想知道在 Switch 语句中做我正在做的事情是否明智。

switch ( $name ) {
    case 'name1': 
        $data['pageName'] = 'name1';
        $data['pageTitle'] = 'Name 1';
        $this->view('name1/index', $data);
        break;
     case 'name2': 
        $data['pageName'] = 'name2';
        $data['pageTitle'] = 'Name 2';
        $this->view('name2/index', $data);
        break;
     case 'name3': 
        $data['pageName'] = 'name3';
        $data['pageTitle'] = 'Name 3';
        $this->view('name3/index', $data);
        break;
     case 'name4': 
        $data['pageName'] = 'name4';
        $data['pageTitle'] = 'Name 4';
        $this->view('name4/index', $data);
        break;
    default:
        $data['pageName'] = 'default';
        $data['pageTitle'] = 'Default';
        $this->view('default/index', $data);
}



if( $name = 'name1' ) { 
    $data['pageName'] = 'name1';
    $data['pageTitle'] = 'Name 1';
    $this->view('name1/index', $data);
} else if( $name = 'name2' ) { 
    $data['pageName'] = 'name2';
    $data['pageTitle'] = 'Name 2';
    $this->view('name2/index', $data);
} else if( $name = 'name3' ) { 
    $data['pageName'] = 'name3';
    $data['pageTitle'] = 'Name 3';
    $this->view('name3/index', $data);
} else if( $name = 'name4' ) { 
    $data['pageName'] = 'name4';
    $data['pageTitle'] = 'Name 4';
    $this->view('name4/index', $data);
} else {
    $data['pageName'] = 'default';
    $data['pageTitle'] = 'default';
    $this->view('default/index', $data);
}

你重复了很多,你可以使用一个数组,isset 和一个 if 语句:

$names = [
           'name1'   => 'Name 1',
           'name2'   => 'Name 2',
           'name3'   => 'Name 3',
           'name4'   => 'Name 4',
           'default' => 'default'
];

$name = isset($names[$name]) ? $name : 'default';

$data['pageName'] = $name;
$data['pageTitle'] = $names[$name];

$this->view($name . '/index', $data);

我完全同意史蒂夫的上述建议,但如果代码只是为了举例,那么使用 if/else 或 switch/case 并不重要。这完全取决于偏好。这是另一个涉及性能细节的问题:Performance: if else vs switch, while vs for, for each vs for, print vs printf