public function test(){
$data = array(
'臥房'=>array(
'床'=>array(
'單人床'=>array(
'ysy高級(jí)單人床'=>1,
'tsm高級(jí)單人床'=>9
),
'雙人床'=>array(
'ysy高級(jí)雙人床'=>2,
'tsm高級(jí)雙人床'=>8
)
),
'床頭柜'=>array(
'進(jìn)口柜'=>array(
'法國艾莉絲高級(jí)柜'=>3,
'法國萊蒙高級(jí)柜'=>6,
),
'本地柜'=>array(
'富貴鳥高級(jí)柜'=>4,
'富力新蒿亭高級(jí)柜'=>5,
),
)
)
);
$result = $this->initTree($data,0,1,1);
}
/**
* 自動(dòng)創(chuàng)建分類
* @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
}
//判斷數(shù)組的值是否為空,不為空則將id賦值給level,并回調(diào)
if (is_array($v)) {
$arr[$step]=$id;
$pid = $arr[$step];
$step++;
$level++;
}
$this->initTree($v, $pid,$level,$step,$arr);//回調(diào)
$step--;
$level--;
}
return 200;
}
結(jié)果如下
雙人床應(yīng)該是在床下面,而我這里變成在單人床下面了所以怎么調(diào)試剛剛的代碼數(shù)據(jù)表結(jié)構(gòu)如下
這個(gè)回調(diào)有點(diǎn)難度?。?!根據(jù)數(shù)組創(chuàng)建無限級(jí)分類樹
炎炎設(shè)計(jì)
2019-03-14 11:56:19