1
回答
如何获取分类的子分类ID号
注册华为云得mate10,2.9折抢先购!>>>   

数据表结构

id  --  parent_id  --  name
1       0                  新闻
2       1                  国内新闻
3       2                  广东新闻

如何获取新闻分类(ID = 1)的所有子分类ID,包括子分类的子分类,求算法。

我想在 news/list/1 下显示他的子栏目中的文章,现在不知道如何取得子分类的ID号!

PHP
举报
OSC老司机
发帖于5年前 1回/664阅
共有1个答案 最后回答: 5年前

方法很多,比较经典的就是递归算法,简单实现了下:

数据表设计:

数据表内容:

程序实现:

<?php
$m_resource = mysql_connect('localhost', 'root', '');
mysql_select_db('test');
mysql_query('SET NAMES UTF8');
$result = array();
arr(array(1));
var_dump($result);
mysql_close($m_resource);

// +-------------------------------------------------------------------------------
// | 递归查找无限分类函数
// +-------------------------------------------------------------------------------
// | @param Array $pid_arr 需要进行递归查找的 id, 可以为一个或多个,以数组形式传递       // +-------------------------------------------------------------------------------
// | @return Array
// +-------------------------------------------------------------------------------
function arr($pid_arr){
  global $result;
  $in = '';
  foreach($pid_arr as $value){
    $in .= empty($in) ? $value : ',' . $value;
  }
  $m_result = mysql_query("SELECT * FROM test WHERE pid in ({$in})");
  $temp_result = array();
  while($tmp_arr = mysql_fetch_assoc($m_result)){
    $result[] = $tmp_arr;
    $temp_result[] = $tmp_arr;
  }
  if($temp_result){
    $pid_array = array();
    foreach($temp_result as $value){
      $pid_array[] = $value['id'];
    }
    arr($pid_array);
  }
}

程序结果:

--- 共有 1 条评论 ---
王道中强流这算法比较低级 用递归查询 5年前 回复
顶部