...
三级分类不递归是怎样实现的呢 (附测试代码) 求解
本帖最后由 anydy2008 于 2013-01-06 12:07:44 编辑
看了几天前的一个帖子
http://bbs.csdn.net/topics/390331161
当中有snmr_com 的热心回复,提到不递归实现分类的方法。
我就想,按照这个逻辑可否将类别实现树形数组结构呢。
下面是我用递归形式生成的 代码如下:
$arr = array(
array('id'=>1,'city_name'=>'中国','rel_id'=>'1','pid'=>0),
array('id'=>2,'city_name'=>'广东','rel_id'=>'1-2','pid'=>1),
array('id'=>3,'city_name'=>'深圳','rel_id'=>'1-2-3','pid'=>2),
array('id'=>4,'city_name'=>'广州','rel_id'=>'1-2-4','pid'=>2)
);
function find_subclass( $pid ){
global $arr;
$__arr = array();
foreach ( $arr as $k=>$v )
{
if( $v['pid']==$pid )$__arr[] = $v;
}
return $__arr;
}
function tree_subclass($pid=0){
$__arr = array();
$__arr = find_subclass($pid);
if( !empty($__arr) ){
foreach ( $__arr as $k=>$v )
{
$__arr[$k]['subclass'] = tree_subclass($v['id']);
}
}
return $__arr;
}
var_dump(tree_subclass(0));
?>
期望通过不递归的形式得到的数组结构:
array(1) {
[0]=>
array(5) {
["id"]=>
int(1)
["city_name"]=>
string(4) "中国"
["rel_id"]=>
string(1) "1"
["pid"]=>
int(0)
["subclass"]=>
array(1) {
[0]=>
array(5) {
["id"]=>
int(2)
["city_name"]=>
string(4) "广东"
["rel_id"]=>
string(3) "1-2"
["pid"]=>
int(1)
["subclass"]=>
array(2) {
[0]=>
array(5) {
["id"]=>
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
相关文章
相关视频
网友评论
文明上网理性发言,请遵守 新闻评论服务协议
我要评论