Rumah > pembangunan bahagian belakang > tutorial php > php无限极分类生成分类树的实现方法介绍

php无限极分类生成分类树的实现方法介绍

黄舟
Lepaskan: 2023-03-16 09:26:01
asal
2380 orang telah melayarinya

这篇文章主要介绍了PHP实现无限极分类生成分类树的方法,结合实例形式简单分析了无限极分类的原理与实现方法,涉及PHP数组遍历与判断相关操作技巧,需要的朋友可以参考下

本文实例讲述了PHP实现无限极分类生成分类树的方法。分享给大家供大家参考,具体如下:

现在的分类数据库设计基本都是:每一个分类有一个id主键字段,一个pid指向父类的id,这样便可实现无限级分类,取出的数据就是如下的格式:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

$arr = array(

  array("id" => 1 , "pid" => 0 , 'cat' => '栏目一'),

  array("id" => 2 , "pid" => 0 , 'cat' => '栏目二'),

  array("id" => 3 , "pid" => 1 , 'cat' => '栏目三'),

  array("id" => 4 , "pid" => 2 , 'cat' => '栏目四'),

  array("id" => 5 , "pid" => 1 , 'cat' => '栏目五'),

  array("id" => 6 , "pid" => 5 , 'cat' => '栏目六'),

  array("id" => 7 , "pid" => 5 , 'cat' => '栏目七'),

  array("id" => 8 , "pid" => 6 , 'cat' => '栏目八'),

  array("id" => 9 , "pid" => 1 , 'cat' => '栏目九'),

  array("id" => 10 , "pid" => 0 , 'cat' => '栏目十'),

  array("id" => 11 , "pid" => 10 , 'cat' => '栏目十一'),

  array("id" => 12 , "pid" => 11 , 'cat' => '栏目十二'),

  array("id" => 13 , "pid" => 2 , 'cat' => '栏目十三'),

  array("id" => 14, "pid" => 13 , 'cat' => '栏目十四')

);

Salin selepas log masuk

不多说,直接上处理代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

//生成无限极分类树

function make_tree($arr){

  $refer = array();

  $tree = array();

  foreach($arr as $k => $v){

    $refer[$v['id']] = & $arr[$k]; //创建主键的数组引用

  }

  foreach($arr as $k => $v){

    $pid = $v['pid'];  //获取当前分类的父级id

    if($pid == 0){

      $tree[] = & $arr[$k];  //顶级栏目

    }else{

      if(isset($refer[$pid])){

        $refer[$pid]['subcat'][] = & $arr[$k]; //如果存在父级栏目,则添加进父级栏目的子栏目数组中

      }

    }

  }

  return $tree;

}

Salin selepas log masuk

测试运行:

1

2

$cat = make_tree($arr);

print_r($cat);

Salin selepas log masuk

运行结果:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

Array

(

  [0] => Array

    (

      [id] => 1

      [pid] => 0

      [cat] => 栏目一

      [subcat] => Array

        (

          [0] => Array

            (

              [id] => 3

              [pid] => 1

              [cat] => 栏目三

            )

          [1] => Array

            (

              [id] => 5

              [pid] => 1

              [cat] => 栏目五

              [subcat] => Array

                (

                  [0] => Array

                    (

                      [id] => 6

                      [pid] => 5

                      [cat] => 栏目六

                      [subcat] => Array

                        (

                          [0] => Array

                            (

                              [id] => 8

                              [pid] => 6

                              [cat] => 栏目八

                            )

                        )

                    )

                  [1] => Array

                    (

                      [id] => 7

                      [pid] => 5

                      [cat] => 栏目七

                    )

                )

            )

          [2] => Array

            (

              [id] => 9

              [pid] => 1

              [cat] => 栏目九

            )

        )

    )

  [1] => Array

    (

      [id] => 2

      [pid] => 0

      [cat] => 栏目二

      [subcat] => Array

        (

          [0] => Array

            (

              [id] => 4

              [pid] => 2

              [cat] => 栏目四

            )

          [1] => Array

            (

              [id] => 13

              [pid] => 2

              [cat] => 栏目十三

              [subcat] => Array

                (

                  [0] => Array

                    (

                      [id] => 14

                      [pid] => 13

                      [cat] => 栏目十四

                    )

                )

            )

        )

    )

  [2] => Array

    (

      [id] => 10

      [pid] => 0

      [cat] => 栏目十

      [subcat] => Array

        (

          [0] => Array

            (

              [id] => 11

              [pid] => 10

              [cat] => 栏目十一

              [subcat] => Array

                (

                  [0] => Array

                    (

                      [id] => 12

                      [pid] => 11

                      [cat] => 栏目十二

                    )

                )

            )

        )

    )

)

Salin selepas log masuk

Atas ialah kandungan terperinci php无限极分类生成分类树的实现方法介绍. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan