php三種無限分類

無限分類,是指從一個最高分類開始,每一個子分類均可以分出本身的若干個子分類,能夠一直分下去,稱爲無限級分類;數據庫

下面是對省市縣的無限極分類的列子。數據庫如圖:spa

代碼示例以下:code

/**
 * @Description: 無限極分類一
 * @Author: Yang
 * @param $data  數據庫數據
 * @param int $parent_id   父級ID
 * @return array
 */
function getTree1($data, $parent_id = 0)
{
    $tree = array();
    foreach ($data as $k => $v) {
        if ($v["parent_id"] == $parent_id) {
            unset($data[$k]);
            if (!empty($data)) {
                $children = getTree1($data, $v["id"]);
                if (!empty($children)) {
                    $v["_child"] = $children;
                }
            }
            $tree[] = $v;
        }
    }
    return $tree;
}


/**
 * @Description: 無限極分類二
 * @Author: Yang
 * @param $data   數據庫數據
 * @param int $parent_id  父級ID
 * @param int $level  等級
 * @return array
 */
function getTree2($data, $parent_id = 0, $level = 0)
{
    static $tree = array();
    foreach ($data as $k => $v) {
        if ($v["parent_id"] == $parent_id) {
            $v["level"] = $level;
            $tree[] = $v;
            getTree2($data, $v["id"], $level + 1);
        }
    }
    return $tree;
}

/**
 * @Description: 無限分類三:麪包屑導航
 * @Author: Yang
 * @param $data  數據庫數據
 * @param $id    分類ID
 * @return array
 */
function getCrumbsBar($data, $id) {
    static $tree = array();
    foreach ($data as $k => $v) {
        if ($v["id"] == $id) {
            getCrumbsBar($data, $v["parent_id"]);
            $tree[] = $v;
        }
    }
    return $tree;
}
相關文章
相關標籤/搜索