美文网首页
PHP上机题无限级分类!

PHP上机题无限级分类!

作者: DragonersLi | 来源:发表于2019-05-16 14:17 被阅读0次
-- ----------------------------
-- Table structure for category
-- ----------------------------
DROP TABLE IF EXISTS `category`;
CREATE TABLE `category` (
  `gcid` int(11) NOT NULL AUTO_INCREMENT,
  `gcname` varchar(90) DEFAULT NULL,
  `parentgcid` int(11) DEFAULT NULL,
  PRIMARY KEY (`gcid`),
  KEY `rtrr` (`parentgcid`) USING HASH,
  KEY `gff` (`gcname`) USING HASH,
  KEY `gcid` (`gcid`) USING HASH
) ENGINE=MyISAM AUTO_INCREMENT=3083179 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of category
-- ----------------------------
INSERT INTO `category` VALUES ('1021', '女装', '0');
INSERT INTO `category` VALUES ('1022', '童装', '0');
INSERT INTO `category` VALUES ('1023', '其他', '0');
INSERT INTO `category` VALUES ('1024', 'T恤', '1021');
INSERT INTO `category` VALUES ('1025', '衬衫', '1021');
INSERT INTO `category` VALUES ('1026', '小衫', '1021');
INSERT INTO `category` VALUES ('1027', '毛衫', '1021');

<?php 
//phpinfo();
//set_time_limit(0);
$t1 = microtime(true);


header("Content-type: text/html; charset=utf-8");
$mysql_server_name = "localhost";
$mysql_username = "root"; 
$mysql_password = "root"; 
$mysql_database = "test"; 
$mysql_table = "category"; 


#$con = @mysql_connect($mysql_server_name,$mysql_username,$mysql_password);
#if (empty($con)){
#  die('Could not connect: ' . mysql_error());
#}
#$db = mysql_select_db($mysql_database,$con);
#mysql_query("set names 'utf8'"); 
#
$mysqli = new mysqli($mysql_server_name,$mysql_username,$mysql_password, $mysql_database);

 
if(mysqli_connect_errno())
{
    echo mysqli_connect_error();
}
$sql = "select * from {$mysql_table} ";
$res = $mysqli->query($sql); 
  if ($res) { 
        while($row = $res->fetch_assoc())
        {
            $data[] = $row;
        }
         
        #$res = treeList($data);#测试递归算法耗时110.626712秒
        $res = generateTree($data);#测试引用算法耗时0.21408秒 
         
        echo"<pre>";print_r($res); #所以选择引用算法的方法实现比较好
        
    }else{ 
        echo '查询出错!'.  $mysqli->error; 
    }


$mysqli->close(); 


 $t2 = microtime(true);
echo '数据库查询耗时'.round($t2-$t1,6).'秒<br/>';


#递归算法 
function treeList($data, $pid = 0)
{ 
    $node = []; 
    foreach ($data as $key => $value) { 
        if ($pid == $value ['parentgcid']) {
            $node [$key] = $value; 
            $node [$key] ['childs'] = array_values(treeList($data, $value ['gcid']));
        }
    }
    return $node;
}

#引用算法
function generateTree($data){
    $items = [];
    foreach($data as $v){
        $items[$v['gcid']] = $v;
    }
    $tree = [];
    foreach($items as $k => $item){
        if(isset($items[$item['parentgcid']])){
            $items[$item['parentgcid']]['childs'][] = &$items[$k];
        }else{
            $tree[] = &$items[$k];
        }
    }
    return $tree;
} 
 
?>

    










相关文章

  • PHP上机题无限级分类!

  • PHP无限级分类

    layout: posttitle: "PHP无限级分类"date: 2016-04-29 09:36:19 +0...

  • PHP递归实现无限级分类

    PHP递归实现无限级分类 在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性。那么PHP是如何...

  • PHP实现无限级分类

    php中经常用到无限级分类,牵涉到两种情况 找指定栏目的子孙栏目,即子孙树 找指定的栏目的父栏目/父栏目....顶...

  • php->无限级分类

    用php实现下面的功能,方法:数据库表的合理设计+递归 1.业务逻辑(1)表结构分类表字段:cat_id、cat_...

  • PHP实现无限级分类

    数据格式: 非递归算法 递归算法 最终结果 原创作品,允许转载,转载时请务必以超链接形式标明原始出处、作者信息和本...

  • PHP无限级分类(一)

    无限级分类在web项目中应用非常广泛,比如商品分类、权限节点、组织架构等等。下面介绍两种将二维数组整理成无限级树形...

  • PHP无限级分类(二)

    在 PHP无限级分类(一) 中,我们介绍了两种简单的无限级分类构造方法。下面介绍一种从树形结构中获取子结构的方法:...

  • PHP中实用无限级分类

    在我们工作中,无限级分类应用非常多,其实其思想并不难,无非运用递归思想自己调用自己罢了。下面就来看看我写的无限级分...

  • PHP树形结构无限级分类

    参考地址:https://bubaijun.com/page.php?id=140https://learnku....

网友评论

      本文标题:PHP上机题无限级分类!

      本文链接:https://www.haomeiwen.com/subject/njwmoqtx.html