1. 自动加载:
    <?php
    /*
    @desc:自动加载带命名空间的类的函数
    @param dir 需要注册自动加载的文件夹
    @param namespace 文件夹对应的命名空间
    */
    function autoloader($dir,$namespace){
     spl_autoload_register(function($name) use ($dir,$namespace){
         $name = str_replace('\\',DIRECTORY_SEPARATOR,$name);
         $namespace = str_replace('\\',DIRECTORY_SEPARATOR,$namespace);
         $name = str_replace($namespace.DIRECTORY_SEPARATOR,'',$name);
         require $dir.DIRECTORY_SEPARATOR.$name.'.php';
     });
    }
  2. 无限级分类:
    1. 树形分类:
      /*
      * 生成树形结构
      * @param $array 分类数据
      * @param $pid 父级id
      * @param $son 子级分类名
      * @return $list 整理好分类的数组
      */
      function getTree($array,$id = 'id',$pid = 'pid',$son = 'children'){
      $list = array(); //格式化的树
      $tmpMap = array(); //临时扁平数据
      foreach ($array as $item) {
       $tmpMap[$item[$id]] = $item;
      }
      foreach ($array as $item) {
       if (isset($tmpMap[$item[$pid]])) {
           $tmpMap[$item[$pid]][$son][] = &$tmpMap[$item[$id]];
       } else {
           $list[] = &$tmpMap[$item[$id]];
       }
      }
      unset($tmpMap);
      return $list;
      }
    2. 层级分类:
      /*
      * 递归实现无限极分类
      * @param $array 分类数据
      * @param $pid 父级id
      * @param $level 分类级别,用来显示格式用的
      * @return $list 整理好分类的数组
      */
      function getLevel($array, $pid = 0, $level = 0){
      // 声明静态数组,避免递归调用时,多次声明导致数组覆盖
      static $list = [];
      foreach ($array as $key => $value) {
       if ($value['pid'] == $pid) {
           $value['level'] = $level;
           $list[]         = $value;
           unset($array[$key]);
           getLevel($array, $value['id'], $level + 1);
       }
      }
      return $list;
      }
文档更新时间: 2020-08-07 18:49   作者:lee