如何在PHP和MySql中使用分层查询编写查询或获取所需的输出

时间:2018-08-14 09:35:52

标签: mysql php hierarchy recursion codeigniter

我写的代码如下:

public function index()
    {
        $table_name = 'org_chart';

        $data['employee_data'] = $this->common_model->get_all_data($table_name);

        for($i=0;$i < count($data['employee_data']);$i++){
            $Reporting_Name=$data['employee_data'][$i]['Name'];
            $query = "where ReportingName = ? ";
            $data['rept_data'][$i] = $this->common_model->fetch_data('org_chart',$query,$Reporting_Name);
        }
        echo "<pre>";
        //print_r($data['rept_data']);die();
        $new_data = [];

                foreach($data['employee_data'] as $value){
                if(isset($value['ReportingName']) && $value['ReportingName']!= ''){
                     $new_data[$value['ReportingName']]['children'] = array('name' => $value['Name'],'title' => $value['title']);
                }
                else{
                    $new_data = $value;
                }


        }
        $data['new_data']=$new_data;
        //echo "<pre>";

       print_r($data['new_data']);
            $this->load->view('org',$data);
    }

我的数据库表如下:

Sr.No.     Employee Name         Reporting Name      Designation
---------------------------------------------------------------
 1        Ajay Kumar                                 general manager
 2        Aniket Kumar            Ajay Kumar         department manager
 3        Pratik Mehata           Ajay Kumar         department manager
 4        Neetu Chauhan           Ajay Kumar         department manager
 5        Swapnil Dalwi           Ajay Kumar         department manager
 6        Namrata Dongra          Pratik Mehata      senior engineer
 7        Devendra More           Pratik Mehata      senior engineer
 8        Amol Chiman             Devendra More      engineer
 9        Manish Gudekar          Devendra More      engineer
 10       Snehal Sawant           Manish Gudekar     intern

我得到的输出如下:

Array
(
    [id] => 1
    [Name] => Ajay Kumar
    [ReportingName] => 
    [title] => general manager
    [srno] => 1
    [Ajay Kumar] => Array
        (
            [children] => Array
                (
                    [name] => Swapnil Dalwi
                    [title] => department manager
                )

        )

    [Pratik Mehata] => Array
        (
            [children] => Array
                (
                    [name] => Devendra More
                    [title] => senior engineer
                )

        )

    [Devendra More] => Array
        (
            [children] => Array
                (
                    [name] => Manish Gudekar
                    [title] => engineer
                )

        )

    [Manish Gudekar] => Array
        (
            [children] => Array
                (
                    [name] => Snehal Sawant
                    [title] => intern
                )

        )

    [Snehal Sawant] => Array
        (
            [children] => Array
                (
                    [name] => Shradhha Deshmukh
                    [title] => trainee
                )

        )

)

但是我需要以下输出:

<?php
$value = array (
  'name' => 'Ajay Kumar',
  'title' => 'general manager',
  'children' => 
  array (
    0 => 
    array (
      'name' => 'Aniket kumar',
      'title' => 'department manager',
    ),
    1 => 
    array (
      'name' => 'Pratik Mehata',
      'title' => 'department manager',
      'children' => 
      array (
        0 => 
        array (
          'name' => 'Namarta Dongra',
          'title' => 'senior engineer',
        ),
        1 => 
        array (
          'name' => 'Devendra More',
          'title' => 'senior engineer',
          'children' => 
          array (
            0 => 
            array (
              'name' => 'Amol Chiman',
              'title' => 'engineer',
            ),
            1 => 
            array (
              'name' => 'Manish Gudekar',
              'title' => 'UE engineer',
              'children' => 
              array (
                0 => 
                array (
                  'name' => 'Snehal Sawant',
                  'title' => 'Intern',
                ),
              ),
            ),
          ),
        ),
      ),
    ),
    2 => 
    array (
      'name' => 'Neetu Chauhan',
      'title' => 'department manager',
    ),
    3 => 
    array (
      'name' => 'Swapnil Dalwi',
      'title' => 'department manager',
    ),
  ),
);
$result = json_encode ($value);
print_r($result);
?>

0 个答案:

没有答案