首页 > php框架 > php无限级分类(带层深)算法

php无限级分类(带层深)算法

一个利用数组来实现无限级分类php类程序,有需要的朋友可参考,这里就不多说什么了直接复制上代码。

<?php
$cates = array(
    array(
        'cid' => 1,
        'cname' => '新闻',
        'pid' => 0
    ) ,
    array(
        'cid' => 2,
        'cname' => '通知',
        'pid' => 0
    ) ,
    array(
        'cid' => 3,
        'cname' => '国内新闻',
        'pid' => 1
    ) ,
    array(
        'cid' => 4,
        'cname' => '国际新闻',
        'pid' => 1
    ) ,
    array(
        'cid' => 5,
        'cname' => '北京新闻',
        'pid' => 3
    ) ,
    array(
        'cid' => 6,
        'cname' => '上海新闻',
        'pid' => 3
    ) ,
    array(
        'cid' => 7,
        'cname' => '紧急通知',
        'pid' => 2
    ) ,
    array(
        'cid' => 8,
        'cname' => '一般通知',
        'pid' => 2
    ) ,
);
/**
 * 生成菜单
 *
 * @param array $data 原始数据
 * @param integer $pid 当前分类的父id
 * @return array 处理后数据
 */
function createMenuTree($data = array() , $pid = 0) {
    if (empty($data)) {
        return array();
    }
    static $level = 0;
    $returnArray = array();
    foreach ($data as $node) {
        if ($node['pid'] == $pid) {
            $returnArray[] = array(
                'cid' => $node['cid'],
                'cname' => $node['cname'],
                'level' => $level
            );
            if (hasChild($node['cid'], $data)) {
                $level++;
                $returnArray = array_merge($returnArray, createMenuTree($data, $node['cid']));
                $level--;
            }
        }
    }
    return $returnArray;
}
/**
 * 检查是否有子分类
 *
 * @param integer $cid 当前分类的id
 * @param array $data 原始数据
 * @return boolean 是否有子分类
 */
function hasChild($cid, $data) {
    $hasChild = false;
    foreach ($data as $node) {
        if ($node['pid'] == $cid) {
            $hasChild = true;
            break;
        }
    }
    return $hasChild;
}
header('Content-Type: text/html; charset=utf-8');
$result = createMenuTree($cates);
foreach ($result as $row) {
    for ($i = 0; $i < $row['level']; $i++) {
        echo "t";
    }
    echo $row['cname'] . "n";
}
?>


永久地址:http://www.phprm.com/frame/php1005353.html

转载随意~请带上教程地址吧^^

标签:none

发表留言