需要正确的 if 条件用法 php

 if($data['params']['by'] == "date" && $data['params']['cnstr_type'] == "1"){

      $this->load->view('profile/report_view/page1', $data);

    } elseif($data['params']['by'] == "date" && $data['params']['cnstr_type'] == "2") {

      $this->load->view('profile/report_view/page2', $data);

    } elseif($data['params']['by'] == "week" && $data['params']['cnstr_type'] == "1") {

      $this->load->view('profile/report_view/page3', $data);

    } elseif($data['params']['by'] == "week" && $data['params']['cnstr_type'] == "2") {

      $this->load->view('profile/report_view/page4', $data);

    }

有没有更好的方法来改进这段代码


慕哥9229398
浏览 108回答 2
2回答

子衿沉夜

您可以拥有一个交叉引用组合的数组,而不是拥有不断扩展的 ifif或语句组合列表。switch然后测试特定组合是否存在并使用页面的查找值...$pages = ["date" => [1 =>'profile/report_view/page1',                    2 =>'profile/report_view/page2'],          "week" => [1 =>'profile/report_view/page3',                    2 =>'profile/report_view/page4']];if ( isset($pages[$data['params']['by']][$data['params']['cnstr_type']])) {    $this->load->view($pages[$data['params']['by']][$data['params']['cnstr_type']], $data);}如果唯一的变化是结尾的编号,您甚至可以profile/report_view/page在对$this->load->view().

明月笑刀无情

您可以使用switch case来简化您的代码switch([$data['params']['by'],$data['params']['cnstr_type']]){case ["date","1"]:     $this->load->view('profile/report_view/page1', $data);     break;case ["date","2"]:      $this->load->view('profile/report_view/page2', $data);      break;case ["week","1"]:      $this->load->view('profile/report_view/page3', $data);      break;case ["week","2"]:      $this->load->view('profile/report_view/page4', $data);      break;}这将使您的代码看起来更整洁。
打开App,查看更多内容
随时随地看视频慕课网APP