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
收藏随意^^请保留教程地址.