博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP函数之无极分类
阅读量:6984 次
发布时间:2019-06-27

本文共 2606 字,大约阅读时间需要 8 分钟。

  无极分类属于现在比较难攻克的一关,现在就把代码贴出来,有需要的朋友可以根据实际需要扩展一下。

  //假设分类关系为“ 地球”(id为1,父id为0),“国家”(id为2,父id为1),“省份”(id为5,父id为2),城市(id为9,父id为5),地区(id为14,父id为9)

<?php

//获取子分类
function getChildId($parentid=0)      //形参传入父id,方便抓取子分类数组。
{
    mysql_connect("localhost","root","");  
    mysql_query("set names utf8");
    $sql="select * from `category` where parentid='{$parentid}' limit 100"; //从数据表 ·分类· 中,根据父id的值抓取一组子分类。默认值为0,故抓取到的为地球。
    $result=mysql_query($sql);
    $results=array();                          //声明一个空数组,方便装入子分类。
    while($child=mysql_fetch_assoc($result))              //通过while循环抓取返回给$child
    {
        $results[]=$child;                               //把子分类组里的数据插入到$results这个数组中
    }
    return $results;                                     //把结果返回给函数,默认为一个包含地球的组。
}

//函数getChildId()返回的是子分类数组

function getTree($parentid=0,$treeArray=array())
{
    $child = getChild($parentid);                      //返回的是形参输入的父id下面的子分类组,默认为一个包含国家的组。
    foreach($child as $baby)                        //$baby此时为一个一个的国家
    {
        $treeArray[]=$baby;                       //将默认传入的一个空数组装入子分类的数据,首先转入的为地球。 
        $treeArray = getTree($baby['id'],$treeArray);           //函数回调,形成一个循环。当$child的值为0时,即父id下面没有子分类时。跳过foreach语句,直接执行下一句
        
    }
    return $treeArray;                          //return装着子分类的数组,返回给函数,
}
//运行函数 返回$treeArray;
$tree = getTree();
var_dump($tree);
?>

  下面再来看一段新的代码:

header('Content-Type:text/html;charset=utf-8');     //告诉浏览器用utf-8编码阅读

mysql_connect("localhost","root","");

mysql_select_db("cms4");
mysql_query("set names utf8");

 

function getList($pid = 0)                 //抓取子分类的函数

{
    //按新闻分类表的  父id查找 子分类列表
    $sql = "select * from news_categorys where pid = '{$pid}' limit 100";
    $query = mysql_query($sql);
    if(!$query)
    {
        //有错报错
        die(mysql_error());
    }
    $lists = array();
    //在结果集里取一行
    while($row = mysql_fetch_assoc($query))
    {
        $lists[] = $row;
    }
    return $lists;
}

//获得所有分类的数组

function getTree($pid = 0,$typeTree = array(),$level = 0)

{

    $list = getList($pid);            //获取默认父id为0的子分类

  var_dump($list);              //将子分类输出

                          
    foreach($list as $l)

{                        //当$list是空数组时,foreach不会执行

        
     $levelStr = '<font color="red">';
     for($i=0;$i<$level;$i++)

  {

       $levelStr.='|-';
  }
          $levelStr .= '</font>';                //$levelStr = $levelStr.'</font>'
          $l['name'] = $levelStr.$l['name'];
          $typeTree[] = $l;
 
        //逐层深入递归
        $typeTree = getTree($l['id'],$typeTree,$level+1);    //获取下一级分类
                                    //$level 指子分类层级
    }
    return $typeTree;
}
$tree = getTree();                    //将所有父和子分类赋值给$tree
//var_dump($tree);

foreach ($tree as $v)              
{
    echo $v["name"]."<br />";               //
}

 

转载于:https://www.cnblogs.com/futan/archive/2012/12/11/php_wujicategory.html

你可能感兴趣的文章
Python中os和shutil模块实用方法集锦
查看>>
c++中的左值与右值
查看>>
阿里云推出免费套餐 30余款云产品半年免费
查看>>
linux 用户/用户组添加修改删除(ubuntu/centos)
查看>>
Flink 原理与实现:Window 机制
查看>>
Kubernetes环境下的各种调试方法
查看>>
CC2530之Flash笔记
查看>>
Weex Workshop 挑战赛,等你来战!
查看>>
linux 怎么完全卸载mysql数据库
查看>>
Dart的HTTP请求和响应(1)
查看>>
寻找最大的K个数,Top K问题的堆实现
查看>>
自动发布工具应该具备的11个标准特征
查看>>
页面设计四大基本原则
查看>>
2016及以后的自动化测试趋势 -《测试技术六月刊》
查看>>
基于Angular创建后台数据模拟(译)
查看>>
Spring中bean配置的继承
查看>>
用JSP实现学生查询
查看>>
企业网站怎么建设
查看>>
数据库和MySQL相关面试题目
查看>>
Yii 框架学习--01 框架入门
查看>>