php 无限级栏目排序,PHP 无限级排序实例

1ae6962bbd4de8d7f3ecd2de000c60b2.png

header('content-type:text/html;charset=utf-8');

echo "

";

//-无限级排序,自己优化改良的,清除上次调用此函数后留下的静态变量的值

$arr = array(

array('id'=>2,'cname'=>'分类2','parent_id'=>1),

array('id'=>9,'cname'=>'分类9','parent_id'=>8),

array('id'=>1,'cname'=>'分类1','parent_id'=>0),

array('id'=>7,'cname'=>'分类7','parent_id'=>0),

array('id'=>3,'cname'=>'分类3','parent_id'=>2),

array('id'=>4,'cname'=>'分类4','parent_id'=>0),

array('id'=>6,'cname'=>'分类6','parent_id'=>5),

array('id'=>8,'cname'=>'分类8','parent_id'=>7),

array('id'=>5,'cname'=>'分类5','parent_id'=>4)

);

// 根据子类id 找所有父类

function _getParent($data, $son_id, $level=0, $isClear=true){

//声明一个静态数组存储结果

static $res = array();

//刚进入函数要清除上次调用此函数后留下的静态变量的值,进入深一层循环时则不要清除

if($isClear==true) $res =array();

foreach ($data as $v) {

if($v['id'] == $son_id){

$v['level'] = $level;

$res[] = $v;

_getParent($data, $v['parent_id'], $level-1, $isClear=false);

}

}

return $res;

}

print_r(_getParent($arr, 6));

echo "


";

// 根据父类id找所有子类

function _getSon($data, $p_id=0, $level=0, $isClear=true){

//声明一个静态数组存储结果

static $res = array();

//刚进入函数要清除上次调用此函数后留下的静态变量的值,进入深一层循环时则不要清除

if($isClear==true) $res =array();

foreach ($data as $v) {

if($v['parent_id'] == $p_id){

$v['level'] = $level;

$res[] = $v;

_getSon($data, $v['id'], $level+1, $isClear=false);

}

}

return $res;

}

print_r(_getSon($arr, 0));

echo "


"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值