首页 > php代码 > php 无限级分类

php 无限级分类

<?php
class Trees {
    private $_keyId = 'Id';
    private $_keyName = 'Name';
    private $_keyFid = 'Fid';
    function __construct($keyId = '', $keyName = '', $keyFid = '') {
        if ($keyId == "") {
            $this->_keyId = $this->_keyId;
        } else {
            $this->_keyId = $keyId;
        }
        if ($keyName == "") {
            $this->_keyName = $this->_keyName;
        } else {
            $this->_keyName = $keyName;
        }
        if ($keyFid == "") {
            $this->_keyFid = $this->_keyFid;
        } else {
            $this->_keyFid = $keyFid;
        }
    }
    public function treeListAll($fid, $step = 0, &$fromArray, &$resultArray) {
        $step++;
        foreach ($fromArray as $k => $v) {
            if ($v[$this->_keyFid] == $fid) {
                $newArray[] = $v;
            }
        }
        if (isset($newArray)) {
            foreach ($newArray as $k => $v) {
                $this->treeListAll($v[$this->_keyId], $step, $fromArray, $resultArray);
                $v['Step'] = $step;
                $resultArray[] = $v;
            }
        }
    }
    public function getTreeListAll($fid = 0, $step = 0, &$fromArray, &$resultArray) {
        $step++;
        foreach ($fromArray as $k => $v) {
            if ($v[$this->_keyFid] == $fid) {
                $newArray[] = $v;
            }
        }
        if (isset($newArray)) {
            foreach ($newArray as $k => $v) {
                $this->getTreeListAll($v[$this->_keyId], $step, $fromArray, $resultArray);
                $v['Step'] = $step;
                $resultArray[] = $v;
            }
        }
    }
    public function getTreeList($id = 0, &$fromArray) {
        $resultArray = array();
        $this->getTreeListAll($id, 0, $fromArray, $resultArray);
        $resultArray = array_reverse($resultArray);
        return $resultArray;
    }
    public function getTreeArray($id = 0, &$fromArray) {
        $result_one_array = $this->getTreeList($id, $fromArray);
        foreach ($result_one_array as $k => $v) {
            $result_two_array[] = array(
                $v[$this->_keyId]
            );
        }
        if (isset($result_two_array)) {
            for ($i = 0; $i < count($result_two_array); $i++) {
                for ($j = 0; $j < count($result_two_array[$i]); $j++) {
                    $result[] = $result_two_array[$i][$j];
                }
            }
        } else {
            $result = array();
        }
        return $result;
    }
    public function treeListAllTop($fid, $step = 0, &$fromArray, &$resultArray) {
        $step++;
        foreach ($fromArray as $k => $v) {
            if ($v[$this->_keyId] == $fid) {
                $newArray[] = $v;
            }
        }
        if (isset($newArray)) {
            foreach ($newArray as $k => $v) {
                $this->treeListAllTop($v[$this->_keyFid], $step, $fromArray, $resultArray);
                $v['Step'] = $step;
                $resultArray[] = $v;
            }
        }
    }
    public function getTreeListAllTop($fid = 0, $step = 0, &$fromArray, &$resultArray) {
        $step++;
        foreach ($fromArray as $k => $v) {
            if ($v[$this->_keyId] == $fid) {
                $newArray[] = $v;
            }
        }
        if (isset($newArray)) {
            foreach ($newArray as $k => $v) {
                $this->getTreeListAllTop($v[$this->_keyFid], $step, $fromArray, $resultArray);
                $v['Step'] = $step;
                $resultArray[] = $v;
            }
        }
    }
    public function getTreeListTop($id = 0, &$fromArray) {
        $resultArray = array();
        $this->getTreeListAllTop($id, 0, $fromArray, $resultArray);
        $resultArray = array_reverse($resultArray);
        return $resultArray;
    }
    public function getTreeArrayTop($id = 0, &$fromArray) {
        $result_one_array = $this->getTreeListTop($id, $fromArray);
        foreach ($result_one_array as $k => $v) {
            $result_two_array[] = array(
                $v[$this->_keyFid]
            );
        }
        if (isset($result_two_array)) {
            for ($i = 0; $i < count($result_two_array); $i++) {
                for ($j = 0; $j < count($result_two_array[$i]); $j++) {
                    $result[] = $result_two_array[$i][$j];
                }
            }
        } else {
            $result = array();
        }
        return $result;
    }
    public function makeOptionString($sourcArray, $firstHint = "顶级分类", $selectId = array(
        '-1'
    ) , $type = 0) {
        if ($type == 0) {
            if ($firstHint != "") {
                $str = '<option value="0">' . $firstHint . '</option>';
            } else {
                $str = '';
            }
            foreach ($sourcArray as $value) {
                $level = "";
                for ($i = 1; $i < $value['Step']; $i++) {
                    $level = $level . "----|";
                }
                $selectStr = "";
                if (in_array($value[$this->_keyId], $selectId)) {
                    $selectStr = "selected";
                } else {
                }
                $str.= '<option value="' . $value[$this->_keyId] . '" ' . $selectStr . '>|' . $level . $value[$this->_keyName] . "</option>";
                $level = "";
            }
        } else {
            $flagStep = - 1;
            $str = '<option value="0">' . $firstHint . '</option>';
            foreach ($sourcArray as $value) {
                $level = "";
                for ($i = 1; $i < $value['Step']; $i++) {
                    $level = $level . "----|";
                }
                $selectStr = "";
                if ($type == $value[$this->_keyId]) {
                    $flagStep = $value['Step'];
                } else {
                    if ($flagStep != - 1 && $value['Step'] > $flagStep) {
                    } else {
                        if ($flagStep != - 1 && $value['Step'] <= $flagStep) {
                            $flagStep = - 1;
                        }
                        if ($value[$this->_keyId] == $selectId) {
                            $selectStr = "selected";
                        }
                        $str.= '<option value="' . $value[$this->_keyId] . '" ' . $selectStr . '>|' . $level . $value[$this->_keyName] . "</option>";
                    }
                }
                $level = "";
            }
        }
        return $str;
    }
}


本文链接:http://www.phprm.com/code/e430a4c6695c4218cbf51509dccdb0d0.html

收藏随意^^请保留教程地址.

标签:none

发表留言