php无限级分类从Excel导入到数据库

Excel 表格格式如图:
无限级分类
通过PHPExcel导入之后拿到如下图数据:
在这里插入图片描述
目标是生成新的数组,数组是同pid的存放在其父数组下(使用无限级分类算法),代码如下:

  // 无限分类算法
  function generateTree($data){
      $items = array();
      foreach($data as $v){
          $items[$v['id']] = $v;
      }
      $tree = array();
      foreach($items as $k => $item){
          if(isset($items[$item['pid']])){
              $items[$item['pid']]['son'][] = &$items[$k];
          }else{
              $tree[] = &$items[$k];
          }
      }
      return $tree;
  }

拿到分类后的新数组¥tree,如图
在这里插入图片描述
下一步目标是把该数组存进数据库,由于son级数未定,无法采取定量入库方式,下面是递归入库方式:

    //递归入库
    public function digui_db($arr,$pid = 0)
    {
        $data['type'] = 's';
        $data['name'] = $arr['name'];
        $data['sort'] = $arr['sort'];
        $data['pid'] = $pid;
        $pid = db('category')->insertGetId($data); //博主是TP5,此处获取pid为了递归传给son使用
       if(count($arr['son'])>0)
       {
          for ($i=0; $i < count($arr['son']); $i++) 
          { 
                $this->digui_db($arr['son'][$i],$pid);
          }
       }
    }

主函数第一次调用:

            for ($i=0; $i < count($tree); $i++) { 
              $this->digui_db($tree[$i]);//第一层进库的pid为0
            }

有更好的方法,欢迎交流!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值