php生成树形(无递归)
来源:互联网 发布:java用于计算的类 编辑:程序博客网 时间:2024/06/07 23:32
001
<?php
002
003
/**
004
* 此方法由@Tonton 提供
005
* http://my.oschina.net/u/918697
006
* @date 2012-12-12
007
*/
008
function
genTree5(
$items
) {
009
foreach
(
$items
as
$item
)
010
$items
[
$item
[
'pid'
]][
'son'
][
$item
[
'id'
]] = &
$items
[
$item
[
'id'
]];
011
return
isset(
$items
[0][
'son'
]) ?
$items
[0][
'son'
] :
array
();
012
}
013
014
/**
015
* 将数据格式化成树形结构
016
* @author Xuefen.Tong
017
* @param array $items
018
* @return array
019
*/
020
function
genTree9(
$items
) {
021
$tree
=
array
();
//格式化好的树
022
foreach
(
$items
as
$item
)
023
if
(isset(
$items
[
$item
[
'pid'
]]))
024
$items
[
$item
[
'pid'
]][
'son'
][] = &
$items
[
$item
[
'id'
]];
025
else
026
$tree
[] = &
$items
[
$item
[
'id'
]];
027
return
$tree
;
028
}
029
030
$items
=
array
(
031
1 =>
array
(
'id'
=> 1,
'pid'
=> 0,
'name'
=>
'江西省'
),
032
2 =>
array
(
'id'
=> 2,
'pid'
=> 0,
'name'
=>
'黑龙江省'
),
033
3 =>
array
(
'id'
=> 3,
'pid'
=> 1,
'name'
=>
'南昌市'
),
034
4 =>
array
(
'id'
=> 4,
'pid'
=> 2,
'name'
=>
'哈尔滨市'
),
035
5 =>
array
(
'id'
=> 5,
'pid'
=> 2,
'name'
=>
'鸡西市'
),
036
6 =>
array
(
'id'
=> 6,
'pid'
=> 4,
'name'
=>
'香坊区'
),
037
7 =>
array
(
'id'
=> 7,
'pid'
=> 4,
'name'
=>
'南岗区'
),
038
8 =>
array
(
'id'
=> 8,
'pid'
=> 6,
'name'
=>
'和兴路'
),
039
9 =>
array
(
'id'
=> 9,
'pid'
=> 7,
'name'
=>
'西大直街'
),
040
10 =>
array
(
'id'
=> 10,
'pid'
=> 8,
'name'
=>
'东北林业大学'
),
041
11 =>
array
(
'id'
=> 11,
'pid'
=> 9,
'name'
=>
'哈尔滨工业大学'
),
042
12 =>
array
(
'id'
=> 12,
'pid'
=> 8,
'name'
=>
'哈尔滨师范大学'
),
043
13 =>
array
(
'id'
=> 13,
'pid'
=> 1,
'name'
=>
'赣州市'
),
044
14 =>
array
(
'id'
=> 14,
'pid'
=> 13,
'name'
=>
'赣县'
),
045
15 =>
array
(
'id'
=> 15,
'pid'
=> 13,
'name'
=>
'于都县'
),
046
16 =>
array
(
'id'
=> 16,
'pid'
=> 14,
'name'
=>
'茅店镇'
),
047
17 =>
array
(
'id'
=> 17,
'pid'
=> 14,
'name'
=>
'大田乡'
),
048
18 =>
array
(
'id'
=> 18,
'pid'
=> 16,
'name'
=>
'义源村'
),
049
19 =>
array
(
'id'
=> 19,
'pid'
=> 16,
'name'
=>
'上坝村'
),
050
);
051
echo
"<pre>"
;
052
print_r(genTree5(
$items
));
053
print_r(genTree9(
$items
));
054
055
//后者输出格式,前者类似,只是数组键值不一样,不过不影响数据结构
056
/*
057
Array
058
(
059
[0] => Array
060
(
061
[id] => 1
062
[pid] => 0
063
[name] => 江西省
064
[son] => Array
065
(
066
[0] => Array
067
(
068
[id] => 3
069
[pid] => 1
070
[name] => 南昌市
071
)
072
073
[1] => Array
074
(
075
[id] => 13
076
[pid] => 1
077
[name] => 赣州市
078
[son] => Array
079
(
080
[0] => Array
081
(
082
[id] => 14
083
[pid] => 13
084
[name] => 赣县
085
[son] => Array
086
(
087
[0] => Array
088
(
089
[id] => 16
090
[pid] => 14
091
[name] => 茅店镇
092
[son] => Array
093
(
094
[0] => Array
095
(
096
[id] => 18
097
[pid] => 16
098
[name] => 义源村
099
)
100
101
[1] => Array
102
(
103
[id] => 19
104
[pid] => 16
105
[name] => 上坝村
106
)
107
108
)
109
110
)
111
112
[1] => Array
113
(
114
[id] => 17
115
[pid] => 14
116
[name] => 大田乡
117
)
118
119
)
120
121
)
122
123
[1] => Array
124
(
125
[id] => 15
126
[pid] => 13
127
[name] => 于都县
128
)
129
130
)
131
132
)
133
134
)
135
136
)
137
138
[1] => Array
139
(
140
[id] => 2
141
[pid] => 0
142
[name] => 黑龙江省
143
[son] => Array
144
(
145
[0] => Array
146
(
147
[id] => 4
148
[pid] => 2
149
[name] => 哈尔滨市
150
[son] => Array
151
(
152
[0] => Array
153
(
154
[id] => 6
155
[pid] => 4
156
[name] => 香坊区
157
[son] => Array
158
(
159
[0] => Array
160
(
161
[id] => 8
162
[pid] => 6
163
[name] => 和兴路
164
[son] => Array
165
(
166
[0] => Array
167
(
168
[id] => 10
169
[pid] => 8
170
[name] =>
171
东北林业大学
172
)
173
174
[1] => Array
175
(
176
[id] => 12
177
[pid] => 8
178
[name] =>
179
哈尔滨师范大学
180
)
181
182
)
183
184
)
185
186
)
187
188
)
189
190
[1] => Array
191
(
192
[id] => 7
193
[pid] => 4
194
[name] => 南岗区
195
[son] => Array
196
(
197
[0] => Array
198
(
199
[id] => 9
200
[pid] => 7
201
[name] => 西大直街
202
[son] => Array
203
(
204
[0] => Array
205
(
206
[id] => 11
207
[pid] => 9
208
[name] =>
209
哈尔滨工业大学
210
)
211
212
)
213
214
)
215
216
)
217
218
)
219
220
)
221
222
)
223
224
[1] => Array
225
(
226
[id] => 5
227
[pid] => 2
228
[name] => 鸡西市
229
)
230
231
)
232
233
)
234
)*/
0 0
- php生成树形(无递归)
- Freemarker 生成树形导航菜单(递归)
- PHP递归 树形children
- 内存递归生成树形结构
- php 无限分类递归树形
- php 生成随机字符串(无重复)
- php中生成树形菜单
- php 无限分类递归树形(稳定版)
- php实现数据树形结构 递归方法
- 两个不用递归的php树形数组构造函数(转)
- PHP利用递归实现无极限分类
- 【树形递归】
- 数据库多层数据运用递归算法生成树形数据
- php不用递归实现无限分类数据的树形格式化
- PHP无限分类(树形类),非数据库直接递归
- POJ2425(树形,无向无环图博弈)
- (无限级、非递归)树形分类
- Freemarker 树形导航菜单(递归)
- shell脚本编程之基础
- 一个简单的java秒表java计时器,用java语言写的,android开发
- 为什么要在web.xml里面配置延时加载
- 优先队列知识点
- MD5加密方法
- php生成树形(无递归)
- 黑马程序员《java基础总结(十一)》(IO流<字符流、字节流>)
- java使用replaceAll的正则表达式替换,非常好用
- 关于index fast full scan 和 index full scan
- JSon数据的解析
- LeetCode(94)Unique Binary Search Trees
- shell脚本编程之awk
- 外汇基础
- 黑马程序员-反射 & JavaBean