Codeigniter等效

时间:2016-08-09 17:12:17

标签: php codeigniter

我正在寻找一个小帮助,非常感谢,我有一个原始的意大利面条PHP代码我转换为codeigniter,似乎工作但输出不准确,我的语法缺少什么

raw php

  function displayMenu($parent =0) {

        $query =mysql_query("SELECT * "
                . " FROM tbl_org_structure "
                . "WHERE parent_id='$parent'"

                ) or die(mysql_error());
        if(mysql_num_rows($query) > 0 ){
            echo  '<ul>';
            while ($row = mysql_fetch_array($query)) {
                echo '<li>'.$row['name'];
                displayMenu($row['id']);
                   echo '</li>'; 
            }
            echo '</ul>';
        }
    }

我的codeigniter等价物

    function getHierarchy($parent=0){

        $hierarchy = $this->db
                ->where('parent_id',$parent)
                ->get('tbl_org_structure')
                ->result();
        $stringBuilder='<ul>';
        foreach ($hierarchy as $chainOfCommand):          
            $stringBuilder.='<li>'.$chainOfCommand->name;
            $this->getHierarchy($chainOfCommand->id);
            $stringBuilder.='</li>';
        endforeach;
        $stringBuilder.='</ul>';

 echo $stringBuilder;

    }

原始php输出

董事会

Chief Executive Officer (CEO)
    Finance Department
        FC
            test
        CA
    Human Resources Department (HR)
        HOR
        MO
    IT Department
        TSM
        Sys Dev
    Sales Department
        Acc M
        MD
    Production
        PC
        DM

codeigniter输出

  test

FC
CA

HOR
MO

TSM
Sys Dev

Acc M
MD

PC
DM

Finance Department
Human Resources Department (HR)
IT Department
Sales Department
Production

Chief Executive Officer (CEO)

Board of Directors

建议

1 个答案:

答案 0 :(得分:2)

你在返回递归堆栈之前echo结果,所以你一直走到你的层次结构中的一片叶子,回应那片叶子,回来并回显父母,等等。你应该return $stringBuilder。然后你需要调用代码到echo getHierarchy()

或者,只需像displayMenu中那样立即回复所有内容,而不是构建字符串。