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;
    }
}
如何获得元素数组的级别?例如:

  • A类(0级)
    • 子类别1(1级)
      • Sub_Sub_1类(2级)
      • Sub_Sub_第2类(2级)
    • 第2类子单元(1级)
  • B类(0级)
  • C类(0级)
  • 以下是资料来源:


    构建列表时,您也需要添加它。这基本上有两个方面:

    • 如果元素没有父元素,则其级别为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级)