Tree 树形结构化

// 结构:
$arr = array(
     array('id'=>'1','pid'=>0,'name'=>'一级栏目一'),
     array('id'=>'2','pid'=>0,'name'=>'一级栏目二', 'weight' => 101),
     array('id'=>'3','pid'=>1,'name'=>'二级栏目一', 'weight' => 1),
     array('id'=>'4','pid'=>1,'name'=>'二级栏目二', 'weight' => 2),
     array('id'=>'5','pid'=>2,'name'=>'二级栏目三'),
     array('id'=>'6','pid'=>3,'name'=>'三级栏目一'),
     array('id'=>'7','pid'=>3,'name'=>'三级栏目二')
)

// 用法:
    // 使用默认配置 初始化数据
    $tree = zxf\Tools\Tree::instance($data);
    // OR
    $tree = zxf\Tools\Tree::instance()->setData($data);
    // 自定义id、pid、children配置
    zxf\Tools\Tree::instance($data)->setId('id')->setPid('pid')->setChildlist('children')->getTree();
    // 自定义权重字段和排序方式
    zxf\Tools\Tree::instance($data)->setWeight('weight')->setSortType('desc')->getTree();
    // 自定义根节点id,默认为0
    zxf\Tools\Tree::instance($data)->setRootId(1)->getTree();
// 接口:
    // 获取结构树
    $nodes = $tree->getTree();
    // 获取所有子节点的主键(包含自己)
    $nodes = $tree->getChildrenAndMeIds(1);
    // 获取所有子节点列表(包含自己)
    $nodes = $tree->getChildrenAndMeNodes(1);
    // 获取所有子节点的主键(不包含自己)
    $nodes = $tree->getChildrenIds(1);
    // 获取所有子节点列表(不包含自己)
    $nodes = $tree->getChildrenNodes(1);
    // 获取所有父节点主键(包含自己)
    $nodes = $tree->getParentAndMeIds(5);
    // 获取所有父节点列表(包含自己)
    $nodes = $tree->getParentAndMeNodes(5);
    // 获取所有父节点主键(不包含自己)
    $nodes = $tree->getParentIds(5);
    // 获取所有父节点列表(不包含自己)
    $nodes = $tree->getParentNodes(5);
    // 获取所有根节点主键
    $roots = $tree->getRootsIds();
    // 重新初始化数据
    $tree->reset();
    // 添加新节点
    $tree->addNode(['id' => 7, 'pid' => 0, 'name' => 'New Node']);
    // 删除节点
    $tree->removeNode(7);
    // 更新节点
    $tree->updateNode(2, ['name' => 'Updated Node']);