zTree树插件所需标准JSON数据格式,如何用PHP的SPL实现算法?

发布于 2022-09-05 05:35:28 字数 2424 浏览 30 评论 0

在使用zTree过程中,插件所需要的JSON格式数据如下所示,目前需要一个算法,将目录格式化为下面数组所示的格式,目录层级未知,算法可以是一个单独的函数或者用PHP的SPL中的RecursiveDirectoryIterator+ RecursiveIteratorIterator来实现。

//zTree插件所需JSON格式数据
[
    { name:"父节点1 - 展开", open:true,
        children: [
            { name:"父节点11 - 折叠",
                children: [
                    { name:"叶子节点111"},
                    { name:"叶子节点112"},
                    { name:"叶子节点113"},
                    { name:"叶子节点114"}
                ]},
            { name:"父节点12 - 折叠",
                children: [
                    { name:"叶子节点121"},
                    { name:"叶子节点122"},
                    { name:"叶子节点123"},
                    { name:"叶子节点124"}
                ]},
            { name:"父节点13 - 没有子节点", isParent:true}
        ]
    },
    { name:"父节点2 - 折叠",
        children: [
            { name:"父节点21 - 展开", open:true,
                children: [
                    { name:"叶子节点211"},
                    { name:"叶子节点212"},
                    { name:"叶子节点213"},
                    { name:"叶子节点214"}
                ]},
            { name:"父节点22 - 折叠",
                children: [
                    { name:"叶子节点221"},
                    { name:"叶子节点222"},
                    { name:"叶子节点223"},
                    { name:"叶子节点224"}
                ]},
            { name:"父节点23 - 折叠",
                children: [
                    { name:"叶子节点231"},
                    { name:"叶子节点232"},
                    { name:"叶子节点233"},
                    { name:"叶子节点234"}
                ]}
        ]
    },
    { name:"父节点3 - 没有子节点", isParent:true}
];
// 算法应得的结果数组
$dir = array(
    array(
        'name' => '一级目录1',
        'children' => array(
            array(
                'name' => '二级目录',
                'children' => array(
                    array('name'=>'文件1'),
                    array('name'=>'文件2'),
                    array('name'=>'文件3'),
                    array('name'=>'文件4'),
                )
            )
        )
    ),
    array(
        'name' => '一级目录2',
        'children' => array(
            array('name'=>'文件1'),
            array('name'=>'文件2'),
            array('name'=>'文件3'),
            array('name'=>'文件4'),
        )
    ),
    array(
        'name' => '一级目录3',
    ),
);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

丑丑阿 2022-09-12 05:35:28
public static function layer($cate,$name = 'children',$pid = 0){
         $arr = array();
         foreach ($cate as $key=>$v) {
             if($v['pId']==$pid){
                 $v[$name] =  self::layer($cate,$name,$v['id']);
                 //清空空的子节点
                 if(empty($v['children'])){
                  unset($v['children']);
                 }
                 $arr[] = $v;

             }
         }
         return $arr;
     }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文