根据数组检查发布的值-PHP

根据数组检查发布的值-PHP,php,arrays,codeigniter,Php,Arrays,Codeigniter,我使用的是MVC框架(CodeIgniter)。在我看来,我有两个数组,一个用于常规报告,另一个用于管理报告: <div id="queries"> <center><strong>Report Generator</strong></center> <br /> <?php $performance = array( '' => 'Click Here',

我使用的是MVC框架(CodeIgniter)。在我看来,我有两个数组,一个用于常规报告,另一个用于管理报告:

 <div id="queries">

        <center><strong>Report Generator</strong></center>
<br />

<?php 
    $performance = array(
        '' => 'Click Here',
        '1' => 'Student Total Wait',
        '2' => 'Counselor Performance Per Session',
        '3' => 'Average Counselor Performance',
    );

    $admin = array(
        '' => 'Click Here',
        '4' => 'Reasons For Visit',
        '5' => 'Aid Years',
    );

    echo form_open('reports_controller/generate');
    echo "<p><strong>Performance Reports</strong></p>";
    echo form_dropdown('performance', $performance); 
    echo "<p><strong>Administrative Reports</strong></p>";
    echo form_dropdown('admin', $admin);

    echo "<br>";
    echo "<br>";
    echo "<br>";
    echo "<br>";
    echo form_submit('submit', 'Generate Report');
?>

</div>
现在我的问题是,如何实际动态加载与模型中正在查询的字段集相对应的视图?我对控制器阵列的工作方式充满信心。我还没有拿到毕业证书。科学1所以我一直在错误地学习php

我希望这是一个恰当的问题

编辑:

我可以硬编码,看看1是否是发布的值,然后用这个模型数据输出某某视图,但我想节省工作,并在做项目时学到很多东西。-自私-对不起

function generate() {
        $this -> load -> model('reports_model');
        $performance = $this -> input -> post('performance');
        $admin = $this -> input -> post('admin');
        if (!empty($performance) || !empty($admin)) {

            if ($this -> input -> post('performance') == '1') {
                $data['totalwait'] = $this -> reports_model -> studenttotalwait();
                $data['main_content'] = 'reports/tables/1';
                $this -> load -> view('includes/js/js_template', $data);
            }

            if ($this -> input -> post('performance') == '2') {
                $data['performance'] = $this -> reports_model -> counselorperformance();
                $data['main_content'] = 'reports/tables/2';
                $this -> load -> view('includes/js/js_template', $data);
            }

            if ($this -> input -> post('performance') == '3') {
                $data['avgperformance'] = $this -> reports_model -> avgperformance();
                $data['main_content'] = 'reports/tables/3';
                $this -> load -> view('includes/js/js_template', $data);
            }

            if ($this -> input -> post('admin') == '4') {
                $data['reasons'] = $this -> reports_model -> reasons();
                $data['main_content'] = 'reports/tables/4';
                $this -> load -> view('includes/js/js_template', $data);
            }

            if ($this -> input -> post('admin') == '5') {
                $data['avgperformance'] = $this -> reports_model -> aidyears();
                $data['main_content'] = 'reports/tables/5';
                $this -> load -> view('includes/js/js_template', $data);
            }

        } else {
            $this -> session -> set_flashdata('reports', 'Please choose a report');
            redirect('staff_controller/reports', 'location');
        }
    }

最后我使用了if-else语句,我使用了Switch-Case,但是我研究了速度,在使用Switch-Case和if-else-elseif之间有很多争论。。。我坚持用旧的可靠的方法

这是一个较短的版本。与其在单个函数中完成所有工作,不如进行细分:

function generate()
{
    $this -> load -> model('reports_model');
    $performance = $this -> input -> post('performance');
    $admin = $this -> input -> post('admin');

    if (!empty($performance) || !empty($admin))
    {
        $data = $this->_data($performance);
        $data['main_content'] = 'reports/tables/'.$performance;
        $this -> load -> view('includes/js/js_template', $data);
    } 
    else
    {
        $this -> session -> set_flashdata('reports', 'Please choose a report');
        redirect('staff_controller/reports', 'location');
    }

}

// saves the day
function _data($performance = 0)
{
    $this -> load -> model('reports_model');

    if(!isset($data[$performance]))
    {
        return FALSE;
    };

    $data = array(
        1 => array(
                 'totalwait' => $this -> reports_model -> studenttotalwait()
             ),
        2 => array(
                 'performance' => $this -> reports_model -> counselorperformance()
             ),
        3 => array(
                 'avgperformance' => $this -> reports_model -> avgperformance()
             ),
        4 => array(
                 'reasons' => $this -> reports_model -> reasons()
             ),
        5 => array(
                 'avgperformance' => $this -> reports_model -> aidyears()
             )
    );
    return $data[$performance];
}

这种方法打破了代码冗余,同时提供了代码的可重用性

我想你是在用最难的方法来做这件事,与其这样做,不如换一种方式来做啊哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈。。。。。。水坝。。这听起来容易多了。。。好吧完成代码后,我将更新答案。
function generate()
{
    $this -> load -> model('reports_model');
    $performance = $this -> input -> post('performance');
    $admin = $this -> input -> post('admin');

    if (!empty($performance) || !empty($admin))
    {
        $data = $this->_data($performance);
        $data['main_content'] = 'reports/tables/'.$performance;
        $this -> load -> view('includes/js/js_template', $data);
    } 
    else
    {
        $this -> session -> set_flashdata('reports', 'Please choose a report');
        redirect('staff_controller/reports', 'location');
    }

}

// saves the day
function _data($performance = 0)
{
    $this -> load -> model('reports_model');

    if(!isset($data[$performance]))
    {
        return FALSE;
    };

    $data = array(
        1 => array(
                 'totalwait' => $this -> reports_model -> studenttotalwait()
             ),
        2 => array(
                 'performance' => $this -> reports_model -> counselorperformance()
             ),
        3 => array(
                 'avgperformance' => $this -> reports_model -> avgperformance()
             ),
        4 => array(
                 'reasons' => $this -> reports_model -> reasons()
             ),
        5 => array(
                 'avgperformance' => $this -> reports_model -> aidyears()
             )
    );
    return $data[$performance];
}