鍍金池/ 問(wèn)答/PHP/ 這個(gè)回調(diào)有點(diǎn)難度?。?!根據(jù)數(shù)組創(chuàng)建無(wú)限級(jí)分類樹

這個(gè)回調(diào)有點(diǎn)難度!?。「鶕?jù)數(shù)組創(chuàng)建無(wú)限級(jí)分類樹

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(
                        '法國(guó)艾莉絲高級(jí)柜'=>3,
                        '法國(guó)萊蒙高級(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)如下
圖片描述

回答
編輯回答
六扇門

圖片描述

2017年5月28日 06:32