无限级分类批量导入csv-记录
Posted phper8
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无限级分类批量导入csv-记录相关的知识,希望对你有一定的参考价值。
function getTreeKey($arr,$level) $count = count($arr)-1; $key = ‘‘; for ($i=$count;$i>=0;$i--) if(($arr[$i][‘level‘]==($level-1)) && $key==‘‘) $key = $i; continue; return $key; function upload() if(empty($_FILES[‘file‘])) $this->json(1,‘无数据‘); else $file = fopen($_FILES[‘file‘][‘tmp_name‘], ‘r‘); fgetcsv($file); //去除第一行 $arr = []; $num = 0; while ($data = fgetcsv($file)) $data = eval(‘return ‘ . iconv(‘gbk‘, ‘utf-8‘, var_export($data, true)) . ‘;‘);//编码转换一下 $data = array_filter($data); if($data) foreach ($data as $key=>$v) $v = trim($v); if($key==0 && !empty($v)) $parent_key = 0; else if($key !=0 && !empty($v)) //查询出上级的名称 $parent_key = $this->getTreeKey($arr,$key); //如存在数据 不在往后面 if(!empty($v)) $arr[$num] = [‘name‘=>$v,‘parent_key‘=>$parent_key,‘level‘=>$key]; $num++; continue; if($arr) set_time_limit(0); foreach ($arr as $k=>&$v) $_data = [ ‘pid‘=>$v[‘level‘]==0 ? 0 : ($arr[$v[‘parent_key‘]][‘id‘]?$arr[$v[‘parent_key‘]][‘id‘]:0), ‘name‘=>$v[‘name‘], ‘level‘=>$v[‘level‘] ]; $this->db->insert(‘kstable‘,$_data); $v[‘id‘] = $this->db->insert_id(); $this->json(0,‘批量导入成功‘); else $this->json(1,‘无数据‘);
以上是关于无限级分类批量导入csv-记录的主要内容,如果未能解决你的问题,请参考以下文章