zoukankan      html  css  js  c++  java
  • 无限极分类

    /**
    * 递归操作数组创建树状等级数组(可用于递归栏目操作)
    * @param $data 操作的数组
    * @param string $fieldPri 唯一键名,如果是表则是表的主键
    * @param string $fieldPid 父ID键名
    * @param int $pid 一级PID的值
    * @param string $sid 子ID用于获得指定指ID的所有父ID栏目
    * @param int $type 操作方式1=>返回多维数组,2=>返回一维数组,3=>得到指定子ID(参数$sid)的所有父栏目
    * @param string $html 栏目名称前缀,用于在视图中显示层次感的栏目列表
    * @param int $level 不需要传参数(执行时调用)
    * @return array
    */

    function channel($data, $fieldPri = 'cid', $fieldPid = 'pid', $pid = 0, $sid = null, $type = 2, $html = " ", $level = 1)
    {
    if (!$data) {
    return array();
    }
    switch ($type) {
    case 1:
    $arr = array();
    foreach ($data as $v) {
    if ($v[$fieldPid] == $pid) {
    $arr[$v[$fieldPri]] = $v;
    $arr[$v[$fieldPri]]['html'] = str_repeat($html, $level - 1);
    $arr[$v[$fieldPri]]["Data"] = channel($data, $fieldPri, $fieldPid, $v[$fieldPri], $sid, $type, $html, $level + 1);
    }
    }
    return $arr;
    case 2:
    $arr = array();
    $id = 0;
    foreach ($data as $v) {
    if ($v[$fieldPid] == $pid) {
    $arr[$id] = $v;
    $arr[$id]['level'] = $level;
    $arr[$id]['html'] = str_repeat($html, $level - 1);
    $sArr =channel($data, $fieldPri, $fieldPid, $v[$fieldPri], $sid, $type, $html, $level + 1);
    $arr = array_merge($arr, $sArr);
    $id = count($arr);
    }
    }
    return $arr;
    case 3:
    static $arr = array();
    foreach ($data as $v) {
    if ($v[$fieldPri] == $sid) {
    $arr[] = $v;
    $sArr = channel($data, $fieldPri, $fieldPid, $pid, $v[$fieldPid], $type, $html, $level + 1);
    $arr = array_merge($arr, $sArr);
    }
    }
    return $arr;
    }
    }

    调用方式:

    $data['cate']=channel($data,'cid','pid',0,0,2,'    ');

  • 相关阅读:
    Post请求的两种编码格式:application/x-www-form-urlencoded和multipart/form-data传参方式
    工作中常用的JavaScript函数片段
    解决导入导出Excel表格文字乱码问题
    清空antd-design时间选择组件 RangePicker的值
    react.js Hooks路由跳转
    linux跳板机服务器搭建
    docker及docker-compose学习
    Android Jenkins+Git+Gradle持续集成
    Windows Server 2008 R2常规安全设置及基本安全策略
    ubuntu lnmp安装及php扩展
  • 原文地址:https://www.cnblogs.com/hgj123/p/3899577.html
Copyright © 2011-2022 走看看