繁体   English   中英

连接表后处理结果

[英]manipulate result after join table

我有一个查询,我编写一个查询,并在codeigniter中加入各种表,并得到如下数组:

    Array
(
    [0] => Array
    (
            [MRID] => 1
            [MSR_Name] => John
            [MSR_email] => john@gmail.com
            [MSR_mobile] => 9000000008
            [MSR_hqdetail] => kjjh
            [hqdetail_id] => 1
            [doctor_id] => 1
            [dr_msl_no] => DOC000012
            [doctor_name] => Y K Singh
            [dr_email] => yksingh@gmail.com
            [chemist_id] => 1
            [chemist_name] => Abhishek Srivastava
            [chem_email] => abhishek@gmail.com
            [chemist_code] => chem001
            [chem_mobile] => 2147483647
            [prod_id] => 1
            [product_name] => Paracitamol
            [unit] => 10
            [pts] => 20
            [scheme] => no scheme
        )

    [1] => Array
(
            [MRID] => 1
            [MSR_Name] => John
            [MSR_email] => john@gmail.com
            [MSR_mobile] => 9000000008
            [MSR_hqdetail] => kjjh
            [hqdetail_id] => 1
            [doctor_id] => 2
            [dr_msl_no] => DOC000013
            [doctor_name] => Dipak Raichura
            [dr_email] => dipakraichura@gmail.com
            [chemist_id] => 1
            [chemist_name] => Abhishek Srivastava
            [chem_email] => abhishek@gmail.com
            [chemist_code] => chem001
            [chem_mobile] => 2147483647
            [prod_id] => 1
            [product_name] => Paracitamol
            [unit] => 10
            [pts] => 20
            [scheme] => no scheme
        )
)

我想操纵数组并想要这样的结果

Array
(
    [0] => Array
    (
        [MRID] => 1
                [MSR_Name] => John
                [MSR_email] => john@gmail.com
                [MSR_mobile] => 9000000008
                [MSR_hqdetail] => kjjh
                [hqdetail_id] => 1
                [doctors] => array(
                                [0] =>  Array(
                                        [doctor_id] => 1
                                        [dr_msl_no] => DOC000012
                                        [doctor_name] => Y K Singh
                                        [dr_email] => yksingh@gmail.com
                                        [chemist]  =>Array(
                                                        [0] => Array(
                                                            [chemist_id] => 1
                                                            [chemist_name] => Abhishek Srivastava
                                                            [chem_email] => abhishek@gmail.com
                                                            [chemist_code] => chem001
                                                            [chem_mobile] => 2147483647
                                                            [product]  =>Array(
                                                                    [0] => Array(
                                                                        [prod_id] => 1
                                                                        [product_name] => Paracitamol
                                                                        [unit] => 10
                                                                        [pts] => 20
                                                                        [scheme] => no scheme
                                                                    )
                                                                )
                                                        )
                                                    )
                                    )
                                [1] => Array(
                                        [doctor_id] => 2
                                        [dr_msl_no] => DOC000013
                                        [doctor_name] => Dipak Raichura
                                        [dr_email] => dipakraichura@gmail.com
                                        [chemist]  =>Array(
                                                        [0] => Array(
                                                            [chemist_id] => 2
                                                            [chemist_name] => chemist2
                                                            [chem_email] => chemist2@gmail.com
                                                            [chemist_code] => chem002
                                                            [chem_mobile] => 7656564565
                                                            product]  =>Array(
                                                                    [0] => Array(
                                                                        [prod_id] => 2
                                                                        [product_name] => Crocin
                                                                        [unit] => 10
                                                                        [pts] => 20
                                                                        [scheme] => no scheme
                                                                    )
                                                                )
                                                        )
                                                    )
                                    )
                                )



            )


    )

请帮助我如何获得正确的结果,谢谢。

CodeIgniter Array Helper对于此类问题非常有用。 必须先加载它,然后才能起作用。

$this->load->helper('array');

Array Helper可以使用键数组从现有数组中提取新数组。 因此,对您感兴趣的键进行数组排列。

    $id = ['MRID', 'MSR_Name', 'MSR_email', 'MSR_mobile', 'MSR_hqdetail', 'hqdetail_id'];
    $aDoc = ['doctor_id', 'dr_msl_no', 'doctor_name', 'dr_email'];
    $aChemist = [ 'chemist_id', 'chemist_name', 'chem_email', 'chemist_code', 'chem_mobile'];
    $aproduct = [ 'prod_id', 'product_name', 'unit', 'pts', 'scheme'];

然后,您提取子阵列并将其重组以符合您的规格。 下面使用的变量$results是查询返回的数组。

    foreach($results as $value)
    {
      $chemist = elements($aChemist, $value);
      $chemist['product'] = elements($aproduct, $value);
      $doctor = elements($aDoc, $value);
      $doctor['chemist'] = $chemist;
      $doctors[] = $doctor;
    }

    $MRID[] = elements($id, $results[0]);
    $MRID['doctors'] = $doctors;

$MIRD数组现在应包含您指定的结果。

如果$results有多个MRID ,则将需要其他代码来分别提取它们。

尽管这相对紧凑,但我倾向于认为您可能希望设计一个查询语句,以产生更接近最终需求的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM