为了账号安全,请及时绑定邮箱和手机立即绑定

这个回调有点难度!!!根据数组创建无限级分类树

这个回调有点难度!!!根据数组创建无限级分类树

PHP
炎炎设计 2019-03-14 11:56:19
public function test(){ $data = array( '卧房'=>array( '床'=>array( '单人床'=>array( 'ysy高级单人床'=>1, 'tsm高级单人床'=>9 ), '双人床'=>array( 'ysy高级双人床'=>2, 'tsm高级双人床'=>8 ) ), '床头柜'=>array( '进口柜'=>array( '法国艾莉丝高级柜'=>3, '法国莱蒙高级柜'=>6, ), '本地柜'=>array( '富贵鸟高级柜'=>4, '富力新蒿亭高级柜'=>5, ), ) ) ); $result = $this->initTree($data,0,1,1); } /** * 自动创建分类 * @param $data * @param $level * @param int $step * @param array $arr * @return int */ protected function initTree($data,$pid,$level=1,$step=1,$arr=[]) { foreach ($data as $k=>$v) { //查询分类表是否已有该分类 $sql = "select id from srv_kit_category where pid=".$pid." and name='" . $k."'"; $idObj = $this->dao->querySql($sql); $id = $idObj?$idObj[0]->id:0; //没有则插入该表,并获取插入id if (!$id) { $insertData = array( 'pid' => $pid, 'name' => $k, 'level'=>$level, ); $this->dao->insert('srv_kit_category')->data($insertData)->check('name', 'notempty')->exec(); if (dao::isError()) { return 404; } $id = $this->dao->lastInsertID();//获取最后的插入id } //判断数组的值是否为空,不为空则将id赋值给level,并回调 if (is_array($v)) { $arr[$step]=$id; $pid = $arr[$step]; $step++; $level++; } $this->initTree($v, $pid,$level,$step,$arr);//回调 $step--; $level--; } return 200; } 结果如下 双人床应该是在床下面,而我这里变成在单人床下面了所以怎么调试刚刚的代码数据表结构如下
查看完整描述

1 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

https://img1.sycdn.imooc.com//5c8f42f80001bef208000479.jpg

查看完整回答
反对 回复 2019-03-18
  • 1 回答
  • 0 关注
  • 389 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信