当前位置:首页 » 编程语言 » php实现分类

php实现分类

发布时间: 2022-10-02 09:15:32

php无限极分类实现的方法

初始化的数据

//初始化原始数据(id=>编号,name=>显示名称,pid=>父级目录id,sort=>排序顺序)$data[1]=array('id'=>'1','name'=>'一级目录A','pid'=>'0','sort'=>'1');
$data[2]=array('id'=>'2','name'=>'一级目录B','pid'=>'0','sort'=>'2');
$data[3]=array('id'=>'3','name'=>'一级目录C','pid'=>'0','sort'=>'3');
$data[4]=array('id'=>'4','name'=>'一级目录D','pid'=>'0','sort'=>'4');
$data[5]=array('id'=>'5','name'=>'二级目录A-1','pid'=>'1','sort'=>'1');
$data[6]=array('id'=>'6','name'=>'二级目录A-2','pid'=>'1','sort'=>'2');
$data[7]=array('id'=>'7','name'=>'二级目录A-3','pid'=>'1','sort'=>'3');
$data[8]=array('id'=>'8','name'=>'二级目录B-1','pid'=>'2','sort'=>'1');
$data[9]=array('id'=>'9','name'=>'二级目录B-2','pid'=>'2','sort'=>'2');
$data[10]=array('id'=>'10','name'=>'二级目录B-3','pid'=>'2','sort'=>'3');
$data[11]=array('id'=>'11','name'=>'二级目录C-1','pid'=>'3','sort'=>'2');
$data[12]=array('id'=>'12','name'=>'二级目录D-1','pid'=>'4','sort'=>'1');
$data[13]=array('id'=>'13','name'=>'二级目录D-2','pid'=>'4','sort'=>'2');
$data[14]=array('id'=>'14','name'=>'三级目录A-2-1','pid'=>'6','sort'=>'1');
$data[15]=array('id'=>'15','name'=>'三级目录A-2-2','pid'=>'6','sort'=>'2');
$data[16]=array('id'=>'16','name'=>'三级目录C-1-1','pid'=>'11','sort'=>'1');
$data[17]=array('id'=>'17','name'=>'三级目录B-2-1','pid'=>'9','sort'=>'2');

显示树结构

functionprintTree($data,$level=0){foreach($dataas$key=>$value){for($i=0;$i<=$level;$i++){echo'&emsp;&emsp;';
}echo$value['name'];echo'<br>';if(!empty($value['children'])){
printTree($value['children'],$level+1);
}
}
}

使用递归的方式获取无限极分类数组

functiongetNodeTree(&$list,&$tree,$pid=0){foreach($listas$key=>$value){if($pid==$value['pid']){
$tree[$value['id']]=$value;unset($list[$key]);
getNodeTree($list,$tree[$value['id']]['children'],$value['id']);
}
}
}

使用引用-无限极分类

functioncreateNodeTree(&$list,&$tree){foreach($listas$key=>$node){if(isset($list[$node['pid']])){
$list[$node['pid']]['children'][]=&$list[$key];
}else{
$tree[]=&$list[$node['id']];
}
}
}

调用

//递归-无限极分类调用getNodeTree($data,$tree);
printTree($tree);//使用引用-无限极分类调用createNodeTree($data,$tree);
printTree($tree);

Ⅱ 个性化的分类推荐,用php如何实现

如何在没有大量用户数据的情况下设计个性化推荐系统并让用户对推荐结果满意从而愿意使用推荐系统,就是冷启动问题。
1. 分类(3类):
1)用户冷启动:如何给新用户做个性化推荐
2)物品冷启动:如何将新物品推荐给可能对其感兴趣的用户。在新闻网站等时效性很强的网站中非常重要。
3)系统冷启动:如何在一个新开发的网站上设计个性化推荐,从而在网站刚发布时就让用户体验到个性化推荐服务。没有用户,只有一些物品信息。

Ⅲ php怎么编辑分类

每个分类应该有一个对应的父id,把数据库里对应子分类的父id换成想要更改成的父分类的id这样就关联起来了吧。一个update语句的事儿

Ⅳ php 如何做菜单分类系统

这个很简单
1:数据在数据库中有这几个字段,id,parentid,name,
2:如果是一级分类parentid=0
3:获得分类
$result=mysql_query('select * from category where parentid=0 ');
$category=array();

while($row = mysql_fetch_array($result))
{
$result2=mysql_query("select * from category where parentid='".$row['id']."' limit 10 ");
$child=array();

while($row2 = mysql_fetch_array($result2))
{
$child[]=$row2;
}
$row['child']=$child;
$category[]=$row;

}
category这个就是该分类的数组
希望我的回答能给你帮助
-----君少

Ⅳ 如何使用PHP实现无限级分类

你还在用浪费时间又浪费内存的递归遍历无限极分类吗,看了该篇文章,我觉得你应该换换了。
这是我在OSChina上看到的一段非常精简的PHP无限极分类生成树方法,巧在引用,整理分享了。

复制代码代码如下:

function generateTree($items){
$tree = array();
foreach($items as $item){
if(isset($items[$item['pid']])){
$items[$item['pid']]['son'][] = &$items[$item['id']];
}else{
$tree[] = &$items[$item['id']];
}
}
return $tree;
}
$items = array(
1 => array('id' => 1, 'pid' => 0, 'name' => '安徽省'),
2 => array('id' => 2, 'pid' => 0, 'name' => '浙江省'),
3 => array('id' => 3, 'pid' => 1, 'name' => '合肥市'),
4 => array('id' => 4, 'pid' => 3, 'name' => '长丰县'),
5 => array('id' => 5, 'pid' => 1, 'name' => '安庆市'),
);
print_r(generateTree($items));

可以看到下面打印的结果:

复制代码代码如下:

Array
(
[0] => Array
(
[id] => 1
[pid] => 0
[name] => 安徽省
[son] => Array
(
[0] => Array
(
[id] => 3
[pid] => 1
[name] => 合肥市
[son] => Array
(
[0] => Array
(
[id] => 4
[pid] => 3
[name] => 长丰县
)

)

)

[1] => Array
(
[id] => 5
[pid] => 1
[name] => 安庆市
)

)

)

[1] => Array
(
[id] => 2
[pid] => 0
[name] => 浙江省
)

)

上面生成树方法还可以精简到5行:

复制代码代码如下:

function generateTree($items){
foreach($items as $item)
$items[$item['pid']]['son'][$item['id']] = &$items[$item['id']];
return isset($items[0]['son']) ? $items[0]['son'] : array();
}

上面这种无限极分类数据树形结构化的方法值得借鉴。但是我觉得这段代码实际用途并不明显啊,你想取出格式化的树形数据还是要递归啊:

复制代码代码如下:

/**
* 如何取数据格式化的树形数据
*/
$tree = generateTree($items);
function getTreeData($tree){
foreach($tree as $t){
echo $t['name'].'<br>';
if(isset($t['son'])){
getTreeData($t['son']);
}
}
}
getTreeData($tree);

Ⅵ PHP如何通过传引用的思想实现无限分类(代码

在我的Simpla中,用到了无限分类,使用了PHP的传引用思想实现无限分类的方法,可以完美展示类似这样的分类模式。
id pid name
1 0 四川
2 0 重庆
3 1 成都
4
1 绵阳
5 3 高新区
代码如下所示:
/**
* 数组变成无限级分类--传引用思想
* @param array $items
* @return array
*/
public static function get_tree($orig) {
//解决下标不是1开始的问题
$items = array();
foreach ($orig as $key => $value) {
$items[$value[‘id‘]] = $value;
}
//开始组装
$tree = array();
foreach ($items as $key => $item) {
if ($item[‘pid‘] == 0) { //为0,则为1级分类
$tree[] = &$items[$key];
} else {
if (isset($items[$item[‘pid‘]])) { //存在值则为二级分类
$items[$item[‘pid‘]][‘child‘][] = &$items[$key]; //传引用直接赋值与改变
} else { //至少三级分类
//由于是传引用思想,这里将不会有值
$tree[] = &$items[$key];
}
}
}
return $tree;
}

以上内容很简单吧,如有错误或者更好的方法,希望可以相互交流。谢谢。!

Ⅶ php+mysql实现无限分类

..................................
不知道你要的分类是什么分类
是写一个方法实现对数据分类?
while(条件){
分类
}
条件为:如果没有此类

Ⅷ php怎么实现选择了分类,子分类才能出现对应的内容。最好是 thinkphp。谢谢

thinkphp jquery与ajax实现省市县三级联动菜单

本示例以省市区三级联动菜单为例:
实现步骤:
第一:先默认从数据库中读取所有的省份。
第二:通过jquery中的change事件,当省份的内容发生改变时,执行change事件,
通过jquery 获得被选中的省份的value值,再后通过异步加载数据。
第三:与第二步相似,当用户选择城市时,会触发change事件,通过jquery 获得被选中的城市的value值,再次进行异步加载数据。

具体示例代码如下:
RecruitmentAction.class.php
<?php
class RecruitmentAction extends Action{
public function chacity(){
$code=I('post.code');
$city=M('city')->where(array('provincecode'=>$code))->select();
echo "<option value='-1'>请选择城市</option>";
if($city){
foreach($city as $c){
echo "<option value=".$c['code'].">".$c['name']."</option>";
}
}
}
public function chaarea(){
$code=I('post.code');
$area=M('area')->where(array('citycode'=>$code))->select();
echo "<option value='-1'>请选择区</option>";

if($area){
foreach($area as $a){
echo "<option value=".$a['code'].">".$a['name']."</option>";
}
}
}
public function chacitydefault(){
$code=I('post.code');
$city=M('city')->where(array('provincecode'=>$code))->select();
if($city){
foreach($city as $c){
echo "<option value=".$c['code'].">".$c['name']."</option>";
}
}
}
public function chaareadefault(){
$code=I('post.code');
$area=M('area')->where(array('citycode'=>$code))->select();
if($area){
foreach($area as $a){
echo "<option value=".$a['code'].">".$a['name']."</option>";
}
}
}
?>

sendrecruitment.php
<html>
<head>
<meta charset="utf-8"/>
<title>省市县三级联动菜单</tilte>
<scirpt src="libs..com/jquery/1.11.1/jquery.min.js"></script>
<script>
$(function(){
$('#sheng').change(function(){
var code=$('#sheng option:selected').val();
$.post('__URL__/chacity',{'code':code},function(data){
$('#city').html(data);
})
})
$('#city').change(function(){
var code=$('#city option:selected').val();
$.post('__URL__/chaarea',{'code':code},function(data){
$('#area').html(data);
})
})
var code=$('#sheng option').eq(0).val();
$.post('__URL__/chacitydefault',{'code':code},function(data){
$('#city').html(data);
})
var areacode=110100;
$.post('__URL__/chaareadefault',{'code':areacode},function(data){
$('#area').html(data);
})
})
</script>
</head>
<body>
<?php
$m=M('province');
$p=$m->order('id asc')->select();
?>
<!-- <input type="text" name="jobplace" value="" />
--> <select name="job_province" id="sheng" style="width:100px;">
<?php
if($p){
foreach($p as $v){
?>
<option value="<?php echo $v['code'];?>"><?php echo $v['name'];?></option>
<?php
}
}
?>
</select>
<select name="job_city" id="city" style="width:100px;"></select>
<select name="job_area" id="area" style="width:100px;"></select>
</body>
</html>

注:本示例中,控制器部分:chacitydefault(),chaareadefault()方法是为了默认页面加载时,执行一次,让省,市,与区进行显示。
这是我以前学习时找的的一个DEMO 你可以参考一下

就该对你有用
希望能够帮到你

Ⅸ 求用php实现京东商品分类菜单方法。。

题主,如果是样式的问题的话,你可以仔细看看京东首页的源码,你看每一个子分类他其实都是有固定的命名规范的,也就是说京东的后台可能是根据分类所选择的样式来判定的..

当然,从京东首页的分类来看,显示的第一排序分类包含多个,而第二排序则也是包含多个
按这种结构来看,本人很怀疑京东是使用了四级的菜单分类,而至于每级分类的广告图样及推荐品牌之类的,那就是功能性的设置了..
简单的来讲:
## 样式方面
+ 参考京东首页的相关源码即可
+ 配合 JS 或者 是根本不用 JS 而采用 Hover
+ 考虑到兼容性问题,建议采用 JS
## 结构方面
+ 考虑菜单的四级架构
+ 参考多级分类查找上级分类的原理
+ 菜单可选择对应的样式..

Ⅹ php 几种常用的递归 无限极分类

/**
*递归实现无限极分类
*@param$array分类数据
*@param$pid父ID
*@param$level分类级别
*@return$list分好类的数组直接遍历即可$level可以用来遍历缩进
*/

functiongetTree($array,$pid=0,$level=0){

//声明静态数组,避免递归调用时,多次声明导致数组覆盖
static$list=[];foreach($arrayas$key=>$value){//第一次遍历,找到父节点为根节点的节点也就是pid=0的节点
if($value['pid']==$pid){//父节点为根节点的节点,级别为0,也就是第一级
$value['level']=$level;//把数组放到list中
$list[]=$value;//把这个节点从数组中移除,减少后续递归消耗
unset($array[$key]);//开始递归,查找父ID为该节点ID的节点,级别则为原级别+1
getTree($array,$value['id'],$level+1);

}
}

热点内容
存储冗余比 发布:2024-05-04 00:12:58 浏览:402
oracle数据库存储原理 发布:2024-05-04 00:10:40 浏览:521
未拆封玩客云3怎么搭建服务器 发布:2024-05-04 00:06:11 浏览:796
彻底删除编译安装的文件 发布:2024-05-04 00:05:33 浏览:55
编程机构数量 发布:2024-05-03 23:49:25 浏览:955
python源码编译安装 发布:2024-05-03 23:48:16 浏览:108
android手机市场 发布:2024-05-03 23:47:04 浏览:499
如何配置vlan并添加端口 发布:2024-05-03 23:37:53 浏览:726
中国电信无线密码怎么修改 发布:2024-05-03 23:37:51 浏览:117
源脚本修改器 发布:2024-05-03 23:36:26 浏览:194