Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多维数组-PHP-CodeIgniter_Php_Arrays_Codeigniter - Fatal编程技术网

多维数组-PHP-CodeIgniter

多维数组-PHP-CodeIgniter,php,arrays,codeigniter,Php,Arrays,Codeigniter,我使用CodeIgniter和Jamie Rumbollow的My_模型连接3个表,从数据库中获得以下结果: Career_Option Course Specialization ------------- ------- -------------- Management MBA Finance Management

我使用CodeIgniter和Jamie Rumbollow的My_模型连接3个表,从数据库中获得以下结果:

Career_Option            Course               Specialization
-------------            -------              --------------
Management               MBA                  Finance
Management               BBA                  Marketing
Engineering              BSc                  Computer Science
Engineering              MSc                  Bio-Technology 
这是从模型类传递到控制器时我的resultset的外观:

Array
(
    [0] => stdClass Object
        (
            [career_option] => Management
            [course] => MBA
            [specialization] => Finance
        )

    [1] => stdClass Object
        (
            [career_option] => Management
            [course] => BBA
            [specialization] => Marketing
        )

    [2] => stdClass Object
        (
            [career_option] => Engineering
            [course] => Bsc
            [specialization] => Computer Science
        )

    [3] => stdClass Object
        (
            [career_option] => Engineering
            [course] => MSc
            [specialization] => Bio-Technology
        )
)
现在,在我的网页上,我想以以下方式显示此结果集:

Management
|
|_ MBA
|   |
|   |_ Finance
|
|_ BBA
    |
    |_ Marketing

Engineering
|
|_ BSc
|   |
|   |_ Computer Science
|
|_ MSc
    | 
    |_ Bio-Technology
你能建议我如何创建多维数组吗??在控制器中保存这些我最终会传递给我的视图的记录


谢谢

这对你有用吗


function tree_from_rows($rows)
{
    $tree = array();
    foreach($rows as $row) {
        $ref =& $tree;
        foreach($row as $value) {
            if (!array_key_exists($value, $ref)) {
                $ref[$value] = array();
            }
            $ref =& $ref[$value];
        }
    }
    return $tree;
}

请注意,最内部的分支也是数组,因此在迭代数组时只需使用索引。

例如,如果数组位于名为$results的变量中,则可以执行以下操作

$aData['careerOptions'] = array();
foreach($results as $result) {
    if(!in_array($result->career_option, $aData['careerOptions'])) {
        $aData['careerOptions'][] = $result->career_option;
    }
    if(!in_array($result->course, $aData['careerOptions'][$result->career_option])) {
        $aData['careerOptions'][$result->career_option][] = $result->course;
    }
    if(!in_array($result->specialization, $aData['careerOptions'][$result->career_option][$result->course])) {
        $aData['careerOptions'][$result->career_option][$result->course][] = $result->specialization;
    }
}
然后,您可以通过执行以下操作将$aData传递给您的视图

$this->load->view('path/to/view', $aData);
一旦进入视图,您就可以访问包含阵列的$careerOptions