亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP 實現簡單的樹形列表 之二

發布時間:2020-07-12 23:43:01 來源:網絡 閱讀:598 作者:AdaAda 欄目:web開發

2017.5.22 北京 大雨

來到公司之后, 準備把代碼移植到公司的小項目里,移植的過程中發現了一處設計有問題的地方,調整一下。

第一處錯誤是:構建葉子節點的時候,只保存了節點的名稱,沒有存ID, 如果頁面跟后臺交互的時候,當存在節點名稱一樣的情況,服務器就不能判斷出用戶正在再操作那個節點。


更改了一下數據結構的定義:
用數組來存放一個節點, 如果這個節點是末端節點,則該數組,只有一個字符串元素,

如果一個節點為葉子節點,則該節點將會有兩個字符串元素,第一元素存節點名稱,第二個元素存節點ID。
如果這個節點存在子節點,則在當前數組中,增加一個數組,所有的子節點的元素存放在這個數組中。

從數據庫中取數據的代碼調整如下:

function build_book_tree($data, $parentid){
    $nodeName = '';
    $child = [];
    foreach($data as $key => $val){
        //如果當前遍歷的項跟查詢的id相同,則獲取節點的名稱
        if ($val[0] == $parentid){
            $nodeName = $val[1];
        }
        //如果當前節點的父節點跟查詢的節點相同,則通過遞歸,獲取他的子節點,并將結果,賦給當前節點節點數組中
        if ($val[2] == $parentid){
            array_push($child, build_book_tree($data, $val[0]));
        }
    }
    //不存放空節點
    if (count($child) > 0)
        return array($nodeName, $child);
    else 
        //return $nodeName;
        return [$nodeName, $parentid];
}

生成HTML list的代碼調整如下

function build_html_list($data)
{
    //輸出標準父子節點
    if (is_array($data) and count($data) == 2){
        if (is_string($data[0]) and is_array($data[1])){
            // 輸出節點名
            echo "<li>".$data[0];
            // 輸出子節點
            if (is_array($data[1])){
                echo "<ul>";
                foreach ($data[1] as $item){
                    if (is_string($item)){
                        echo "<li>".$item."</li>";
                    } 
                    else{
                        build_html_list($item);    
                    }
                }
                echo "</ul>";
            }
            echo "</li>";   
        }
        // 輸出葉子節點 2017.5.22 add by sunhu
        else if (is_string($data[0]) and is_int($data[1])){
            echo sprintf('<li cid="%d">%s</li>', $data[1], $data[0]);
        }                         
    } 
}

這樣,如果用戶單擊一個 li 元素的時候,就可以從 li元素的 cid 屬性中,查找到 節點 id 了

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

象州县| 浮山县| 星子县| 晋城| 永平县| 罗定市| 卢湾区| 黔东| 天台县| 黎平县| 西乌珠穆沁旗| 中江县| 鞍山市| 弋阳县| 中卫市| 隆德县| 阿克陶县| 石屏县| 正宁县| 安国市| 太仆寺旗| 富顺县| 阳新县| 青岛市| 萍乡市| 平顺县| 泽普县| 永兴县| 福州市| 三江| 聂荣县| 南康市| 开原市| 浪卡子县| 鄂托克前旗| 朔州市| 周至县| 虹口区| 张掖市| 海宁市| 河南省|