Php 类别层次结构-检查级别
我使用此脚本创建具有层次结构类别的数组:Php 类别层次结构-检查级别,php,mysql,Php,Mysql,我使用此脚本创建具有层次结构类别的数组: $refs = array(); $list = array(); $sql = "SELECT item_id, parent_id, name FROM items ORDER BY name"; $result = mysql_query($sql); while($data = @mysql_fetch_assoc($result)) { $thisref = &$refs[ $data['item_id'] ]; $thisref[
$refs = array();
$list = array();
$sql = "SELECT item_id, parent_id, name FROM items ORDER BY name";
$result = mysql_query($sql);
while($data = @mysql_fetch_assoc($result)) {
$thisref = &$refs[ $data['item_id'] ];
$thisref['parent_id'] = $data['parent_id'];
$thisref['name'] = $data['name'];
if ($data['parent_id'] == 0) {
$list[ $data['item_id'] ] = &$thisref;
} else {
$refs[ $data['parent_id'] ]['children'][ $data['item_id'] ] = &$thisref;
}
}
如何获得元素数组的级别?例如:
- 子类别1(1级)
- Sub_Sub_1类(2级)
- Sub_Sub_第2类(2级)
- 第2类子单元(1级)
构建列表时,您也需要添加它。这基本上有两个方面:
- 如果元素没有父元素,则其级别为0。设定它
- 如果一个元素有一个父元素,则转到父元素,选择该级别,向其添加一个级别,然后设置该级别
根据数据的排序方式,这可以通过已有的迭代动态完成,也可以只在第一轮中添加那些没有父级的,然后重新迭代并添加子级的级别。您可以使用此函数获取所有级别的类别
function getChildCategories($id=0){
global $db;
$res = $db->getAllArray("SELECT item_id, parent_id, name FROM items parent_id = '$id' ORDER BY name");
$raws = array();
foreach($res as $raw)
{
$raws[$raw['id']]['data'] = $raw;
$subCount = getChildCategories($raw['id']);
if(count($subCount)>0){
$raws[$raw['id']]['sub'] = $subCount;
}
}
return $raws;
}
A类(0级)子类别1(1级)
Sub_Sub_第1类(2级)
Sub_Sub_第2类(2级)
次级2类(1级)
B类(0级)
C类(0级)