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