通过多维数组在codeigniter

时间:2015-12-22 19:38:48

标签: php codeigniter multidimensional-array

我正在尝试使用多维数组创建foreach语句。

控制器:

function index()
{
    $index1 = 0;
    $index2 = 0;
    $index3 = 0;
    $index4 = 0;
    $result1 = $this->data->get_test('kdprogram','kdprogram');
    foreach($result1 as $row1){
        $array_temp[$index1] = $row1;
        $result2 = $this->data->get_test('kdgiat','kdgiat','kdprogram = '.$row1['kdprogram']);

        foreach($result2 as $row2){
            $array_temp[$index1][$index2] = $row2;
            $result3 = $this->data->get_test('kdoutput','kdoutput','kdprogram = '.$row1['kdprogram'].' and kdgiat = '.$row2['kdgiat']); 
             foreach($result3 as $row3){
                $array_temp[$index1][$index2][$index3] = $row3;
                $result4 = $this->data->get_test('kdsoutput','kdsoutput','kdprogram = '.$row1['kdprogram'].' and kdgiat = '.$row2['kdgiat'] .' and kdoutput = '.$row3['kdoutput']);
                foreach($result4 as $row4){
                    $array_temp[$index1][$index2][$index3][$index4] = $row4;
                    $index4++;
                }
                $index3 ++;
            } 
            $index2 ++;
        } 
        $index1 ++;
    }
    //print_r($array_temp);
    $data['damn'] = $array_temp;
    $this->load->view('report/laporan_output', $data);
}

$ data contains:

Array
(
[0] => Array
    (
        [kdprogram] => 06
        [0] => Array
            (
                [kdgiat] => 3400
                [0] => Array
                    (
                        [kdoutput] => 001
                        [0] => Array
                            (
                                [kdsoutput] => 001
                            )
                        [1] => Array
                            (
                                [kdsoutput] => 006
                            )
                    )
                [1] => Array
                    (
                        [kdoutput] => 008
                        [2] => Array
                            (
                                [kdsoutput] => 001
                            )
                    )
            )
    )
)

如何在视图上回显每个数组(kdprogram,kdgiat等),尤其是使用html表? 我做得对吗?

由于

1 个答案:

答案 0 :(得分:2)

它看起来有点难看,我会使用某种递归功能,但这是你的方式

控制器中的

(我假设数组有数字索引,否则你必须像在代码中那样使用某种类型的计数器)

foreach($result1 as $a_counter=>$row1)
{

    $array_temp[$a_counter] = array( 'parent'=>$row1 , 'child'=>array());
    $result2 = $this->data->get_test('kdgiat','kdgiat','kdprogram = '.$row1['kdprogram']);

    foreach($result2 as $b_counter=> $row2)
    {

        $array_temp[$a_counter]['child'][$b_counter] = array( 'parent'=>$row2 , 'child'=>array());
        $result3 = $this->data->get_test('kdoutput','kdoutput','kdprogram = '.$row1['kdprogram'].' and kdgiat = '.$row2['kdgiat']); 

        foreach($result3 as $c_counter=>$row3)
        {

             $array_temp[$a_counter]['child'][$b_counter]['child'][$c_counter] = array( 'parent'=>$row3 , 'child'=>array());
             $result4 = $this->data->get_test('kdsoutput','kdsoutput','kdprogram = '.$row1['kdprogram'].' and kdgiat = '.$row2['kdgiat'] .' and kdoutput = '.$row3['kdoutput']);

             foreach($result4 as $row4)
             {
               $array_temp[$a_counter]['child'][$b_counter]['child'][$c_counter]['child'][] = $row;
             }
         } 
     } 
 }
视图中的

 foreach($result as $a )
 {
     // show a 
     foreach($a['child'] as $b )
     {
          // show b
         foreach($b['child'] as $c )
         {
              // show c
             foreach($c['child'] as $d )
             {
                  // show d
             }
         }
     }
 }