<?php
namespace app\Admin\Model;
use think\Model;
Class Menu extends Model {
/**
* @param [type] $list [列表]
*
* @param string $pk [id]
*
* @param string $pid [父級id]
*
* @param string $child [樹子節點]
*
* @param integer $root [樹的層級]
*
* @return list_to_tree( $data );直接轉為樹級數據
*/
function list_to_tree($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];
}
foreach ($list as $key => $data) {
// 判斷是否存在parent
$parentId = $data[$pid];
if ($root == $parentId) {
$tree[] =& $list[$key];
}else{
if (isset($refer[$parentId])) {
$parent =& $refer[$parentId];
$parent[$child][] =& $list[$key];
}
}
}
}
return $tree;
}
/**
* 樹轉為列表選項
* @param $list [列表]
*
* @param integer $level [層級]
*
* @param string $repeat [循環輸出]
*
* @return 模板中{:tree_to_menu_select($menuList)}方式調用
*/
function tree_to_menu_select($list,$level = 0,$repeat = " - - ")
{
$data = '';
foreach ($list as $key => $value) {
$data = $data."<option value='".$value['id']."'>".str_repeat($repeat, $level).$value['name']."</option>";
if (!empty($value['_child'])) {
$data = $data.tree_to_menu_select($value['_child'],$level+1);
}
}
return $data;
}
}