php - Comment réaliser une sortie d'affichage de classification à trois niveaux?
習慣沉默
習慣沉默 2017-05-17 09:55:55
0
4
847
数据库文件xd_item: id pid item lead ... 1 0 标题名称一 2 0 标题名称二 3 1 中标题名称1-1 4 1 中标题名称1-2 5 2 中标题名称2-1 6 2 中标题名称2-2 8 3 小标题名称1-1-1 9 6 小标题名称2-2-1 10 6 小标题名称2-2-2 11 2 中标题名称2-3 --------------------- 输出效果: 序号 项目名称 1 标题名称一 1.1 中标题名称1-1 1.1.1 小标题名称1-1-1 1.2 中标题名称1-2 2 标题名称二 2.1 中标题名称2-1 2.2 中标题名称2-2 2.2.1 小标题名称2-2-1 2.2.2 小标题名称2-2-2 2.3 中标题名称2-3 ============================ 要在PHP实现这个输出效果,要怎么实现呢?
習慣沉默
習慣沉默

répondre à tous (4)
左手右手慢动作

Interrogez d'abord ceux dont le pid est 0, parcourez ceux dont le pid est 0, interrogez ceux dont le pid est l'ID de ces éléments, puis affichez en boucle

    洪涛

    S'il s'agit d'Oracle, vous pouvez utiliser les fonctions level() et sys_connect_by_path() pour l'implémenter.
    Si vous n'utilisez pas de fonctions, vous pouvez créer une vue pour l'implémenter.

      迷茫

      Ceci est une référence à ma méthode, qui utilise la récursion pour parcourir. Tant qu'elle traite des structures de données, il existe des méthodes, cela dépend simplement de l'efficacité

      .
      static public function toLevel($cate, $delimiter = '|——', $parent_id = 0, $level = 0) { $arr = array(); foreach ($cate as $v) { if ($v['parent_id'] == $parent_id) { $v['type'] = $level + 1; $v['delimiter'] = str_repeat($delimiter, $level); $arr[] = $v; $arr = array_merge($arr, self::toLevel($cate, $delimiter, $v['cate_id'], $v['type'])); } } return $arr; }
        phpcn_u1582

        Interrogez les données à l'aide d'appels de fonction. Le premier répond parfaitement à vos besoins et le second est le stockage récursif des données

        .
        $arr = [ 0=>['id'=>1,'pid'=>0,'title'=>'标题名称一'], 1=>['id'=>2,'pid'=>0,'title'=>'标题名称一'], 2=>['id'=>3,'pid'=>1,'title'=>'标题名称一'], 3=>['id'=>4,'pid'=>1,'title'=>'标题名称一'], 4=>['id'=>5,'pid'=>2,'title'=>'标题名称一'], 5=>['id'=>6,'pid'=>2,'title'=>'标题名称一'], 6=>['id'=>7,'pid'=>3,'title'=>'标题名称一'], 7=>['id'=>8,'pid'=>3,'title'=>'标题名称一'], 8=>['id'=>9,'pid'=>6,'title'=>'标题名称一'], 9=>['id'=>10,'pid'=>6,'title'=>'标题名称一'], 10=>['id'=>11,'pid'=>2,'title'=>'标题名称一'], ]; $result = foreachd($arr,0);var_dump($result); function foreachd($arr,$pid,$showpage = '') { $setpage = 1; $result = array(); foreach($arr as $key=>$val) { if($val['pid'] == $pid) { $setshowpage = $showpage == '' ? $setpage : $showpage.'.'.$setpage; $arr[$key]['page'] = $setshowpage; $setpage++; $setarray = ['page'=>$setshowpage,'title'=>$val['title']]; $result[] = $setarray; $result = array_merge($result,foreachd($arr,$val['id'],$setshowpage)); } } return $result; } /*function foreachd($arr,$pid) { $return = array(); foreach($arr as $val) { if($val['pid'] == $pid) { $return[$val['id']]['title'] = $val['title']; $childrendata = foreachd($arr,$val['id']); if($childrendata) { $return[$val['id']]['children'] = $childrendata; } } } return $return; }*/
          Derniers téléchargements
          Plus>
          effets Web
          Code source du site Web
          Matériel du site Web
          Modèle frontal
          À propos de nous Clause de non-responsabilité Sitemap
          Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!