Code前端首页关于Code前端联系我们

php+mysql 查询获取无限低级排序树结果的示例

terry 2年前 (2023-09-24) 阅读数 67 #后端开发

该示例讲述了 php+mysql 查询获取无限低级排序树结果的过程。分享给大家,供大家参考,具体如下:

这里输入的PHP用MySQL查询无限下属树输出,真的是无限排序。我为您收集了几个无限 PHP 定制的示例。

树输出:

function get_array($user_id,$top=0){

global $mysql,$_G;

$sql = "select user_spread as p_user`s_name .spreads_userid='{ $ user_id} '";

$rows= $mysql->db_fetch_arrays($sql);

if($top==1){

$arr[0]['name']=$user_id ;

$arr[0]['children']=array();

}

$top=$top+1;

foreach ($rows as $key= >$value)

{

$r = get_array($value['name']); //调用函数,传递参数,继续请求下层

$arr[0]['child'][$key]['name']= $value['name']; //复合数组

if(is_array($r)){

$arr[0]['child'][$key]['child']= $r[0]['child'];

}

$i++;

}

return $arr;

}

$list = get_array",("10000",("); //调用1000为最上面number

echo 'var data='.json_encode($list);

这是Output Array,然后转为json

示例:

系统表:id字段为分类标识符,名称field是类别的名称,parent_id字段是其父类别的id,path字段是类别路径,存储类别的祖先集合,isdir指定是否是目录,1表示是,0表示不。sort_list($str,$fatherid,$count)

{

$rs = $this->sql->re_datas("从排序中选择*,其中father_id =fatherid");$ = $this->sql->sql_numrows();

$i=0;

$n = 1;

while(isset($rs[$i]))

${

名称 = "";

for($n = 1 ; $n {

$name.="│ ";

}

if($i if 1==$num)

{

$name.="└─".$rs[$i][name];

}

else

${ ="├─".$rs[$i][名称];

}

if($rs[$i][isdir])

{

$str.="".$name."";

}

else

{

$str.=$name";

} $temp = $count 1;

$str = $this->sort_list($str,$rs[$i][id],$temp);

$i ;

}

return $str ;

}

$this->sql对象为sql操作类对象,re_datas()函数返回查询的数组,sql_numrows()函数返回请求的数量。

:

$sort_list = sort_list ($sort_list,0,1);

示例:

Table:category

id int 主键,自增 ♷ name

pid int 父类 id ,默认为0

顶级类别的默认pid是0。当我们要删除某个类别的子类别树时,主要思路就是重置。当然,由于问题的有效性,不建议每次重复都询问数据。通常的方法是先把所有的类别去掉,存到一个PHP数组中,然后进行处理,最后还可以缓存结果以提高后续请求的性能。

首先我们创建第一个数组,可以直接从数据库中检索:

$categories = array(

array('id'= >1,'name'=>'computer',' pid ' =>0),

array('id'=>2,'name'=>'电话','pid' =>0),

array('id'=>3,'name ' => '笔记本电脑','pid' =>1),

array('id'=>4,'名称' =>'台式机', 'pid' =>1),

array(' id ' => 5,'name' => '智能手机', 'pid' => 2),

array('id' =>6, 'name' => '功能机', 'pid' => 2 ),

array('id'=>7,'name'=>'超极本','pid'=>3),

array('id'=>8,'name'=>'游戏本','pid' =>3),

);

目标是将其转换为以下内容:

  1. 计算机—笔记本
  2. ——-ultrabook
  3. ——-游戏笔记本
  4. —桌面
  5. 移动
  6. —智能手机
  7. —如果数组代表

机器,可以添加子键来存储其子类别:

array(

//1匹配id,方便直接读取

1 => array (

'id'=>1,

'名称'=>'计算机',

'pid'=>0,

child=>数组( &array(( ) 'id'=>3,

'name'=>'笔记本',

'pid'=>1,

'child'=>数组(

// )

),

&array(

'id'=>4,

'名称'=>'桌面',=,=, '=' > array(

/ /将​​留在这里)

),

)

),

//获取步骤

:

$tree = array( );

//该第一步是使用类别 id 作为数组的键并创建子组

foreach($categories as $category){

$tree[$category [' id' ]] = $category;

$tree[$category['id']]['children'] = array();

}

//第二部分使用引用打开每个类别并将其添加到父类的子数组中,从而在一个方向上创建一棵树结构。

foreach ($k=>$item 的 $tree) {

if ($item['pid'] != 0) {

$tree[$item['pid']]['child '][] = &$tree[$k];

}

}

print_r($tree);输出如下:

Array

(

[1] => Array

(

[id] => 1

[name][name] pid ] = > 0

[子项] => 数组

(

[ 0 ] =>数组

(

[id] => 3

[名称] => 笔记本

[pid] => 1

[子] => 数组

(

( => 数组[ 0] => 数组[0] (

[id] => 7

[名称] => 超级本

[pid] => 3

[子项] => 数组 ((♷ )

[1] => 数组

(

[id] => 8

[名称] => 剧本

[pid] => 3 [] = >数组 []

(

)

)

)

)

[1] => 数组

() ) [名称] => 桌面

[pid] => 1

[子] => 数组

(

)

)

)

) 父亲

(

[id] => 2

[name] => 手机

[pid] => 0

[child] => 数组

(

() (

( > 数组

(

[id] => 5

[名称] => 智能手机

[pid] => 2

[子项)] = > 数组♷♷

)

[1] => 数组♷(

[id] => 6

[名称] => 功能电话

(

[id] => 6

[名称] => 功能电话 => => [pid ] => 数组

(

)

)

)

[3] => 数组♷♷(3) => ♷

[名称] => 笔记本

[pid] => 1

[子项] => 数组

(

[0] => 数组

(

([]= > 7[名称] => 超级本

[pid] => 3

[子] => 阵列

(

)

)

)

() [ id] => 8

[名称] => 剧本

[pid] => 3

[子] => 数组

(‷)♷♷)♷♷ )

)

[4] => 数组

(

[id] => 4

[名称] =>

[子] => 数组

(

)

)

[5] => 数组

(

[id]♷ => 5 [id]♷ => 5

[pid] => 2

[ id]♷ [子项] => 数组

(

)

)

[6]♷ => [6‷ => 数组 id] = > 6

[名称] => 机器工作

[pid] => 2

[child] => 数组

(

)

)

数组

(

[id] => 7

[名称] => 超级本

[pid] => 3

[子] => 数组♷(♷)” )

[8] => 数组 ♷(

[id] => 8

[name] => Gamebook

[pid] = 也减少了。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门