当前位置: 首页 > 编程日记 > 正文

PHP函数之无极分类

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

//假设分类关系为“ 地球”(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

相关文章:

我发现了一个非常酷的软件,用自然语言编程!

作者 | 刘欣&#xff0c;前IBM架构师&#xff0c;用15年的技术工作经验去总结提炼&#xff0c;以故事讲解技术本质&#xff0c;让大家看过以后有一种“原来如此”的感觉。来源 | 码农翻身&#xff08;公众号id&#xff1a;coderising&#xff09;周六晚上10点半&#xff0c; 张…

Matlab中去除exe执行时文件的DOS窗口的方法

转自&#xff1a;http://www.matlabsky.com/thread-547-1-1.html 方法1在command window中输入如下命令&#xff1a; cd(prefdir) edit compopts.bat 此时compopts.bat打开&#xff0c;在文件最后添加 A.VC环境下&#xff1a; set LINKFLAGS%LINKFLAGS%/SUBSYSTEM:WINDOWS /ENT…

ubuntu14.04 升级gcc的方法

Ubuntu12..4版本也可正常安装。 1、添加软件源 sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update2、安装gcc高版本&#xff0c;gcc4.8&#xff0c;gcc4.9&#xff0c;gcc5 gcc4.8 sudo apt-get upgrade sudo apt-get install gcc-4.8 g-4.8gcc4.9 sud…

Java 基础【04】Swing 组件事件注册

聪明出于勤奋&#xff0c;天才在于积累。——华罗庚 对上次的三个问题的个人理解&#xff1a; 1&#xff09; 程序首先是从main函数开始执行的&#xff0c;假设main 函数不是 static &#xff0c;就要先实例化这个类&#xff0c;然后调用 main 方法&#xff0c;这似乎是不现实…

VC++ 隐藏控制台程序窗口

转自&#xff1a;http://hi.baidu.com/sicceer/blog/item/d9c35a810d15c4c8bc3e1ec8.html 设置 #pragma comment( linker, "/subsystem:/ "windows/ " /entry:/ "mainCRTStartup/ " " ) // 设置入口地址 这样就ok了 在控制台程序中隐藏控制台窗口…

深度学习原来还可以这么学!

最近身边很多朋友在讨论人工智能&#xff0c;讨论人工智能在我们生活中的应用&#xff0c;随之而来就开始讨论深度学习技术&#xff0c;但是由于深度学习的涉及面比较广&#xff0c;对数学的要求比较高&#xff0c;所以想学也不太敢学&#xff0c;生怕认真学了却没学会。其实可…

016-热更新之FishingJoy一

我们在完成对xlua的学习后&#xff0c;现在我们在接下来的几天中&#xff0c;将会用一个案例来学习一下xlua的使用。请大家不用担心&#xff0c;这个课件的使用是基于xlua而开发的。因为我们在这个部分是为了使用xlua&#xff0c;所以我们只在已经做到的案例上进行xlua的学习。…

从0到1 | 手把手教你如何使用哈工大NLP工具——PyLTP!

作者 | 杨秀璋来源 | CSDN 博客&#xff08;CSDN id&#xff1a;Eastmount&#xff09;&#xff08;本文经作者授权&#xff0c;此系列文章整理后微信平台首发于AI科技大本营&#xff09;【导语】此文是作者基于 Python 构建知识图谱的系列实践教程&#xff0c;具有一定创新性和…

PL/SQL Developer远程访问Oracle数据库

安装oracle对应的版本 &#xff0c;在oracle的安装目录找到oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora这个文件添加上数据库访问的串 LWZC (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST [服务器地址])(PORT 1521))(CONNECT_DATA (SERVER DEDICATED)(SE…

基于shiro的权限设计

shiro介绍 Apache shiro是一个权限控制框架&#xff0c;它将安全认证抽取出来&#xff0c;实现用户身份认证&#xff0c;权限授权&#xff0c;加密&#xff0c;会话管理等功能&#xff0c;是一个通用的安全认证框架&#xff0c;而且还可以用于分布式集群。功能如下 1.验证用户 …

C++ 中隐藏DOS调用的命令行窗口

转自&#xff1a;http://hi.baidu.com/jackyho2000/blog/item/b5c5fabdd3b4db0019d81fbb.html 我演示了一下在MFC程序中怎么应用DOS的dir的命令&#xff0c;可是我们遇到了需要解决的问题&#xff0c;首先就是文件dir.txt的残留问题&#xff0c;其实这个问题很简单&#xff0c;…

Citrix Avalon安装实验手册之一----Avalon概述及实验环境准备

“Avalon”&#xff08;阿瓦隆&#xff09;是思杰下一代桌面/应用交付产品的项目名称&#xff0c;其核心目标是把现有Windows应用和桌面转换成云服务。 其中你最熟悉的XenApp和XenDesktop就是Avalon项目的核心所在。Avalon这个全新解决方案将XenApp、XenDesktop、CloudGateway、…

图片像素、英寸、厘米之间的单位换算

转自&#xff1a;http://hi.baidu.com/cjg501/blog/item/f040fc0898d5379f0b7b8244.html 今天朋友用photoshop处理图片时要把图片保存指定的大小&#xff0c;但她只对厘米要形像感&#xff0c;可是在软件里保存的图片没有这个单位&#xff0c;只能保存的单位为像素&#xff1b;…

创客集结号_你知道单机片和Arduino之间的区别吗

Arduino 是一款便捷灵活、方便上手的开源电子原型平台&#xff0c;包含硬件和软件都是开源的。 开源硬件指与自由及开放原始码软件相同方式设计的计算机和电子硬件。开源硬件开始考虑对软件以外的领域开源&#xff0c;是开源文化的一部分。这个词主要是用来反映自由释放详细信息…

痛!“做C#半年,挣的不如做AI 1个月?”看到第二句泪目……

前两天在网上发现一个热门话题&#xff1a;“做开发一年&#xff0c;在北京月薪不到1万&#xff0c;有点迷茫。” 其中&#xff0c;这个回答我永远忘不了&#xff1a;来源&#xff1a;库库的派派知乎回答&#xff0c;已取得授权在这短短的一条信息里&#xff0c;小编佩服不仅…

刷新记录,算法开源!字节跳动获人体姿态估计竞赛双冠 | CVPR 2019

整理 | Jane出品 | AI科技大本营&#xff08;id&#xff1a;rgznai100&#xff09;【导读】6 月 16--20 日&#xff0c;计算机视觉与模式识别领域顶会 CVPR 2019 在美国长滩举行。每年的 CVPR 盛会除了精彩的论文分享、Workshop 与 Tutorial&#xff0c;还会举办多场涵盖计算机…

java 赋值,算术,一元操作符(翻译自Java Tutorials)

原文出自 http://www.cnblogs.com/ggjucheng/archive/2012/12/15/2819621.html 英文出自 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html 简单赋值操作符 见到的最常用的操作符之一就是简单赋值操作符"".它把值从操作符的右边赋予到左边&#x…

初识Kubernetes(K8s):理论基础

Kubernetes是什么&#xff1f;Kubernetes&#xff0c;简称K8s&#xff0c;是用8代替8个字符“ubernete”而成的缩写。Kubernetes是Google开源的一个容器编排引擎&#xff0c;同时也是一个开源的容器集群管理系统&#xff0c;可以实现容器应用的自动化部署、自动扩缩容、监控和维…

Sobel算子及cvSobel

转自&#xff1a;http://blog.sina.com.cn/s/blog_4bdbec750100mufo.html 由于项目里要用到边缘检测&#xff0c;所以今天研究了一下最简单的梯度的方法。 首先&#xff0c;我们来开一下计算机是如何检测边缘的。以灰度图像为例&#xff0c;它的理论基础是这样的&#xff0c;如…

python全栈开发笔记---------函数

一 数学定义的函数与python中的函数 初中数学函数定义&#xff1a;一般的&#xff0c;在一个变化过程中&#xff0c;如果有两个变量x和y&#xff0c;并且对于x的每一个确定的值&#xff0c;y都有唯一确定的值与其对应&#xff0c;那么我们就把x称为自变量&#xff0c;把y称为因…

OpenCV中的内存泄露问题(cvLoadImage,cvCloneImage)

转自&#xff1a;http://apps.hi.baidu.com/share/detail/30893646 在做项目的过程中&#xff0c;使用OpenCV经常会出现一些内存泄露问题&#xff0c;自己编写的程序出现问题还情有可原&#xff0c;但若是库函数调用和使用时出现&#xff0c;却很令我恼火。花了好长时间和实践的…

41款实用工具,数据获取、清洗、建模、可视化都有了

诸如结构式访谈、非结构式访谈、开放式问卷调查、封闭式问卷调查、记录评论和观察等技术统称为事实调查方法。这种事实调查方法和其他数据获取方法可以采取自动化&#xff0c;而不必使用人工方法。使用具有专用软件的物理设备&#xff08;如终端、传感器和扫描仪等&#xff09;…

OpenCV中的内存泄漏检测

转自&#xff1a;http://chaishushan.blog.163.com/blog/static/130192897200911685559809/ 内存泄漏时程序开发中经常遇到的问题. 而且出现内存泄漏很难检测,但是其导致的结果却是灾难性的. 这里讲一下opencv中内存泄漏检测的一些技巧.OpenCV中关于内存管理主要涉及到以下3个函…

一文全面了解基于内容的推荐算法

作者丨gongyouliu来源 | 转载自大数据与人工智能&#xff08;ID:ai-big-data&#xff09;这篇文章我们主要关注的是基于内容的推荐算法&#xff0c;它也是非常通用的一类推荐算法&#xff0c;在工业界有大量的应用案例。本文会从什么是基于内容的推荐算法、算法基本原理、应用场…

[Nginx优化]分享nginx配置文件及优化说明

1、系统及内核方面 根据服务器用途&#xff0c;建议系统最小化安装或针对web服务器进行系统内核重新编译&#xff1b;在内核参数的一些优化&#xff0c;如下&#xff1a; # Add net.ipv4.tcp_max_syn_backlog 65536 #表示SYN队列的长度 net.core.netdev_max_backlog 3…

laravel项目composer安装

1.下载 Composer &#xff08;https://pkg.phpcomposer.com/#how-to-install-composer&#xff09; 安装前请务必确保已经正确安装了 PHP。打开命令行窗口并执行 php -v 查看是否正确输出版本号。 打开命令行并依次执行下列命令安装最新版本的 Composer&#xff1a; 复制php -r…

淘宝装修:第一日 —— 图片轮播

先添加一个自定义内容区&#xff0c;进入源码编辑&#xff0c;如下图所示&#xff1a; 添加源码如下&#xff1a; <TABLE border0 cellSpacing0 cellPadding0 width773 height220> <TBODY> <TR> <TD width773> <P> <MARQUEE height220 behavi…

强化学习大规模应用还远吗?Youtube推荐已强势上线

来源 | 转载自深度传送门导读&#xff1a;本文将介绍在深度学习的强力驱动下&#xff0c;给推荐系统工业界所带来的最前沿的变化。本文主要根据几大顶会2019的最新论文&#xff0c;总结一下深度强化学习给推荐系统以及CTR预估工业界带来的最新进展。 凡是Google出品&#xff0c…

layui select 与 vue 的结合使用

2019独角兽企业重金招聘Python工程师标准>>> 1. 创建一个select元素 <form class"layui-form layui-form-pane all-account-filter-form"><div class"layui-form-item"><div class"layui-inline"><label class&…

OpenCV 2.2.0 CvvImage的使用

转自&#xff1a;http://blog.csdn.net/raocong2010/archive/2011/01/17/6146158.aspx# 前几日&#xff0c;OpenCV 2.2.0版本出现了...但是...以前版本的CvvImage类不见了...为了能够继续使用这个类&#xff0c;下面把这个类的源代码贴出来&#xff0c;使用的时候将该代码加入到…