三級數組查詢

$data = db::name('AuthRule')->select();
$data = list_to_tree2($data,'id','pid');//aaa($data);
// halt($data);
$this->assign("nodeList", $data);
return $this->fetch();php

 

/** * 把返回的數據集轉換成Tree * @access public * @param array $list 要轉換的數據集 * @param string $pid parent標記字段 * @param string $level level標記字段 * @return array */
function list_to_tree2($list, $pk='id',$pid = 'pid',$child = '_child',$root=0) { // 建立Tree
    $tree = array(); if(is_array($list)) { // 建立基於主鍵的數組引用
        $refer = array(); foreach ($list as $key => $data) { $refer[$data[$pk]] =& $list[$key];//取出每一個欄目id做爲鍵名,
 } foreach ($list as $key => $data) {//開始循環,key從0開始一個一個往下走0123.。。 // 判斷是否存在parent
            $parentId = $data[$pid];//echo $parentId.'|';//0|112|116|117|112輸出每一個數組裏的pid
            if ($root == $parentId) {//key從0開始循環,若是是一級欄目pid==0
                $tree[] =& $list[$key]; //用鏈接符,吧數組放到tree裏面
            }else{ //若是pid不是0,那就是二級欄目
                if (isset($refer[$parentId])) { $parent =& $refer[$parentId];//用pid去refer數組,匹配出父欄目數組,用鏈接符拼接到這裏
                    $parent[$child][] =& $list[$key];aaa($parent);//將當前二級欄目放到父欄目下,拼接成二維數組
 } //仔細看list數組數據格式,第一遍key是0開始循環走的是tree哪裏, //第二遍從1開始走,走到parent這裏,
 } } } return $tree; }

打印出的數據格式:html

 

 

$list = Array
(
    [0] => Array
        (
            [id] => 112
            [name] => /Admin
            [title] => 後臺
            [type] => 1
            [node_icon] => 
            [class_icon] => 
            [status] => 1
            [condition] => 
            [sort] => 0
            [pid] => 0
            [level] => 1
            [update_time] => 1532081114
            [create_time] => 1510821470
            [is_display] => 1
        )

    [1] => Array
        (
            [id] => 117
            [name] => /Admin/Index/index
            [title] => 後臺首頁
            [type] => 1
            [node_icon] => 
            [class_icon] => 
            [status] => 1
            [condition] => 
            [sort] => 0
            [pid] => 116
            [level] => 3
            [update_time] => 1510821714
            [create_time] => 1510821714
            [is_display] => 1
        )
}

$refer = Array
(
    [112] => Array
        (
            [id] => 112
            [name] => /Admin
            [title] => 後臺
            [type] => 1
            [node_icon] => 
            [class_icon] => 
            [status] => 1
            [condition] => 
            [sort] => 0
            [pid] => 0
            [level] => 1
            [update_time] => 1532081114
            [create_time] => 1510821470
            [is_display] => 1
        )

    [117] => Array
        (
            [id] => 117
            [name] => /Admin/Index/index
            [title] => 後臺首頁
            [type] => 1
            [node_icon] => 
            [class_icon] => 
            [status] => 1
            [condition] => 
            [sort] => 0
            [pid] => 116
            [level] => 3
            [update_time] => 1510821714
            [create_time] => 1510821714
            [is_display] => 1
        )
)

$tree = Array
(
    [0] => Array
        (
            [id] => 112
            [name] => /Admin
            [title] => 後臺
            [type] => 1
            [node_icon] => 
            [class_icon] => 
            [status] => 1
            [condition] => 
            [sort] => 0
            [pid] => 0
            [level] => 1
            [update_time] => 1532081114
            [create_time] => 1510821470
            [is_display] => 1
        )

)


$parent = Array
(
    [id] => 116
    [name] => /Admin/Index
    [title] => 首頁
    [type] => 1
    [node_icon] => 
    [class_icon] => 
    [status] => 1
    [condition] => 
    [sort] => 1
    [pid] => 112
    [level] => 2
    [update_time] => 1510821685
    [create_time] => 1510821685
    [is_display] => 1
    [is_status] => 1
    [_child] => Array
        (
            [0] => Array
                (
                    [id] => 117
                    [name] => /Admin/Index/index
                    [title] => 後臺首頁
                    [type] => 1
                    [node_icon] => 
                    [class_icon] => 
                    [status] => 1
                    [condition] => 
                    [sort] => 0
                    [pid] => 116
                    [level] => 3
                    [update_time] => 1510821714
                    [create_time] => 1510821714
                    [is_display] => 1
                    [is_status] => 1
                )

        )

)

  

 頁面:node

<dt>管理權限</dt>
<dd>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="tab rules-data" data-rules="{present name ="$info['rules']"}{$info['rules']}{/present}">
{foreach name="nodeList" item="level1"}
<tr>
    <td style="font-size: 14px;"><label><input name="rules[]" level="1" type="checkbox" obj="node_{$level1.id}" value="{$level1.id}" data="{$level1.id}:1:0" data-id="{$level1.id}" data-pid="0"/> <b class="mac-size">[項目]</b> {$level1.title}</label></td>
</tr>
{present name="level1['_child']"}
{foreach name="level1['_child']" item="level2" }                         
    <tr>
        <td style="padding-left:60px; font-size: 14px;"><label><input name="rules[]" level="2" type="checkbox" obj="node_{$level1.id}_{$level2.id}" value="{$level2.id}"  data="{$level2.id}:2:{$level2.pid}" data-id="{$level2.id}" data-pid="{$level2.pid}"/> <b class="mac-size">[模塊]</b> {$level2.title}</label></td>
    </tr>
	{present  name="$level2['_child']"}
	    {volist name="level2['_child']" id="level3"} 
	    <tr ><td style="padding-left: 120px;">
	    	<label><input name="rules[]" level="3" type="checkbox" obj="node_{$level1.id}_{$level2.id}_{$level3.id}" value="{$level3.id}" data="{$level3.id}:3:{$level3.pid}" data-id="{$level3.id}" data-pid="{$level3.pid}"/>  <b class="mac-size">[操做]</b>{$level3.title}</label>
	    </td></tr>
             {present  name="$level3['_child']"} 
           	<tr>
    		  <td style="padding-left: 160px;">
           	    {foreach name="level3['_child']" item="level4" key="k" }
           	    {if condition="$level4.is_display eq 1"}|   {/if}
					<label>
						<input name="rules[]" level="4" type="checkbox" obj="node_{$level1.id}_{$level2.id}_{$level3.id}_{$level4.id}" value="{$level4.id}" data="{$level4.id}:4:{$level4.pid}" data-id="{$level4.id}" data-pid="{$level4.pid}"/> {$level4.title}    
					</label> 
           	    {/foreach}
           	  </td>
			</tr> 
           {/present}
        {/volist} 
   {/present}
{/foreach}
{/present}
{/foreach}

  

相關文章
相關標籤/搜索