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,'    ');

  • 相关阅读:
    Postman自动化传参实操
    sql语句大全(详细)
    selenium自动化测试-处理iframe
    selenium切换窗口
    selenium中三大窗口切换
    第一个Appium脚本
    Capability配置简介
    APP专项
    Appium环境搭建
    转载——Python Selenium 常用方法总结
  • 原文地址:https://www.cnblogs.com/hgj123/p/3899577.html
Copyright © 2011-2022 走看看