php无限 极连,php实现无限级分类

现在的开发过程中,无限级分类是很常见的一个功能,接下来吾爱编程为大家分享一个无限级分类的方法:

//从数据库中取出的分类数据

$original_array(

array(

'id' => 1,

'pid' => 0,

'name' => '新闻分类'

),

array(

'id' => 2,

'pid' => 0,

'name' => '最新公告'

),

array(

'id' => 3,

'pid' => 1,

'name' => '国内新闻'

),

array(

'id' => 4,

'pid' => 1,

'name' => '国际新闻'

),

array(

'id' => 5,

'pid' => 0,

'name' => '图片分类'

),

array(

'id' => 6,

'pid' => 5,

'name' => '新闻图片'

),

array(

'id' => 7,

'pid' => 5,

'name' => '其它图片'

),

),

//整理函数

/**

* 生成无限级树算法

* @param array $arr 输入数组

* @param number $pid 根级的pid

* @param string $column_name 列名,id|pid父id的名字|children子数组的键名

* @return array $ret

*/

function make_tree($arr, $pid = 0, $column_name = 'id|pid|children') {

list($idname, $pidname, $cldname) = explode('|', $column_name);

$ret = array();

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

if ($v [$pidname] == $pid) {

$tmp = $arr [$k];

unset($arr [$k]);

$tmp [$cldname] = make_tree($arr, $v [$idname], $column_name);

$ret [] = $tmp;

}

}

return $ret;

}

//整理函数的使用

$output_array = make_tree($original_array);

//整理后的分类数据

$output_array = array(

array(

'id' => 1,

'pid' => 0,

'name' => '新闻分类',

'children' => array(

array(

'id' => 3,

'pid' => 1,

'name' => '国内新闻'

),

array(

'id' => 4,

'pid' => 1,

'name' => '国际新闻'

),

),

),

array(

'id' => 2,

'pid' => 0,

'name' => '最新公告',

),

array(

'id' => 5,

'pid' => 0,

'name' => '图片分类',

'children' => array(

array(

'id' => 6,

'pid' => 5,

'name' => '新闻图片'

),

array(

'id' => 7,

'pid' => 5,

'name' => '其它图片'

),

),

),

);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值