php 无限极分类 不递归有好的办法么

2015-04-01 10:22:54 +08:00
 yuptyy

$arr = [
1 => ['name' => '江苏', 'pid' => 0],
2 => ['name' => '徐州', 'pid' => 1],
3 => ['name' => '南京', 'pid' => 1],
4 => ['name' => '泰州', 'pid' => 1],
5 => ['name' => '靖江', 'pid' => 4],
6 => ['name' => '西来', 'pid' => 5],
7 => ['name' => '常州', 'pid' => 1],
8 => ['name' => '新北区', 'pid' => 7],
9 => ['name' => '百草苑', 'pid' => 8],
10 => ['name' => '天宁区', 'pid' => 7]
];

不使用递归, 引用 该怎么实现呢 0.0

4039 次点击
所在节点    PHP
13 条回复
mhycy
2015-04-01 10:24:59 +08:00
你想达到怎样的输出效果?
ksc010
2015-04-01 10:36:47 +08:00
给每个分类记录他的parentid 和所有子类id
yuptyy
2015-04-01 10:37:44 +08:00
这样的效果

[
name => 江苏,
pid => 0,
child => [
[
name => 徐州,
pid => 1,
child => []
],
[
name => 泰州,
pid => 1,
child => [
[
name => 靖江,
pid => 4,
child => [
name => 西来
pid => 5,
child => []
]
]
]
]
...
]
@mhycy
@mhycy
alex321
2015-04-01 10:43:49 +08:00
zhujinliang
2015-04-01 10:50:43 +08:00
用类
invite
2015-04-01 10:53:36 +08:00
这个跟目录一个道理:

用绝对路径,直接可以搜索以XX打头。
否则相对路径都需要类似递归的吧。
tabris17
2015-04-01 11:01:30 +08:00
左右值
cevincheung
2015-04-01 11:03:35 +08:00
http://www.oschina.net/code/snippet_173183_11767

function genTree5($items) {
foreach ($items as $item)
$items[$item['pid']]['son'][$item['id']] = &$items[$item['id']];
return isset($items[0]['son']) ? $items[0]['son'] : array();
}

function genTree9($items) {
$tree = array(); //格式化好的树
foreach ($items as $item)
if (isset($items[$item['pid']]))
$items[$item['pid']]['son'][] = &$items[$item['id']];
else
$tree[] = &$items[$item['id']];
return $tree;
}
sambohuang
2015-04-01 12:45:18 +08:00
左右键
ywisax
2015-04-01 15:00:01 +08:00
上面也提到了,用mptt吧。
imink
2015-04-01 19:53:40 +08:00
楼主参考这个包。https://github.com/etrepat/baum
elvba
2015-04-01 22:52:58 +08:00
http://en.wikipedia.org/wiki/Nested_set_model
嵌套集合模型,左右值
Septembers
2015-04-02 03:15:46 +08:00
扔前端处理吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/180771

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX