使用php的多级分层选择选项

时间:2015-11-21 13:18:26

标签: php select hierarchical

我想生成一个多级分层选择选项,当我们从父级移动到子级时,该选项缩进。我尝试在PHP(CI)中使用递归,但不能生成我需要的东西。 这是我试图生成选择选项的功能。

<?php
$category_list = $this->helper_model->get_category();
/* $category list contains
[{"id":"1","name":"Information Technology","parent_id":"0"},
 {"id":"2","name":"Programming","parent_id":"1"},
 {"id":"3","name":"Civil","parent_id":"5"},
 {"id":"4","name":"Networking","parent_id":"1"},
 {"id":"5","name":"Engineering","parent_id":"0"},
 {"id":"6","name":"Electrical","parent_id":"5"},
 {"id":"11","name":"Hardware","parent_id":"1"},
 {"id":"12","name":"Car Driver","parent_id":"13"},
 {"id":"13","name":"Driver","parent_id":"0"},
 {"id":"14","name":"java","parent_id":"2"},
 {"id":"15","name":"javascript","parent_id":"2"}]
*/

$select_option = $this->multilevel_select($category_list);
echo '<select name = "subCategory">
              <option>Select Category</option>' . $select_option;

function multilevel_select($array,$parent_id = 0,$parents = array()) {
    static $i=0;
    if($parent_id==0)
    {
        foreach ($array as $element) {
            if (($element['parent_id'] != 0) && !in_array($element['parent_id'],$parents)) {
                $parents[] = $element['parent_id'];
            }
        }
    }

    $menu_html = '';
    foreach($array as $element){
        if($element['parent_id']==$parent_id){
            $menu_html .= '<option>';
            for($j=0; $j<$i; $j++) {
                $menu_html .= '&mdash;';
            }
            $menu_html .= $element['name'].'</option>';
            if(in_array($element['id'], $parents)){
                $i++;
                $menu_html .= $this->multilevel_select($array, $element['id'], $parents);
            }
        }
    }
    $i=0;
    return $menu_html;
}
?>

任何人都可以帮我解决这个问题吗?

0 个答案:

没有答案