为了账号安全,请及时绑定邮箱和手机立即绑定

需要正确的 if 条件用法 php

需要正确的 if 条件用法 php

PHP
慕哥9229398 2023-04-21 13:36:20
 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);    }有没有更好的方法来改进这段代码
查看完整描述

2 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

您可以拥有一个交叉引用组合的数组,而不是拥有不断扩展的 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().


查看完整回答
反对 回复 2023-04-21
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

您可以使用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;

}

这将使您的代码看起来更整洁。


查看完整回答
反对 回复 2023-04-21
  • 2 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信