无限分类之无限方法

一次查询N次递归  方法一

测试数据 点我

//获取所有的数据
$pdo = new PDO("mysql:host=localhost;dbname=lamp108",'root','root');
$stmt = $pdo->query("select * from cate2");
$data = $stmt->fetchAll(2);


function getcate4($data,$pid = 0,$level=0){
$level++;
$cateArr = array();
//遍历数据
foreach($data as $v){
	if($v['pid'] == $pid){			//把当前父id下的分类存到$cateArr中
		$v['level'] = $level;		//把深度(层数)一起存到$cateArr中
		$cateArr[] = $v;
		
		//查看这个分类 是否有 子分类  如果有继续加入到 $cateArr
		$cateArr = array_merge($cateArr,getcate4($data,$v['id'],$level));
	}
}
//返回当前的分类数据
return $cateArr;
}

$getArr = getcate4($data);
foreach($getArr as $v){
	echo str_repeat('|&nbsp;',$v['level']).'|-'.$v['name'].'<br />';
}


方法二  一次递归N次查询(仅供参考)

function getcate3($pid=0,$level=0){
	$cateArr = array();
	$level++;
	$pdo = new PDO("mysql:host=localhost;dbname=lamp108",'root','root');
	//第一次pid为0 的时候查的是根分类
	$stmt = $pdo->query("select * from cate2 where pid={$pid}");
	$data = $stmt->fetchAll(2);

	foreach($data as $v){
		$v['level'] = $level;
		$cateArr[] = $v;

		$cateArr=array_merge($cateArr, getcate3($v['id'],$level));
	}
	
	return $cateArr;
}

$data = getcate3();
foreach($data as $v){
	echo str_repeat('|&nbsp;',$v['level']).'|-'.$v['name'].'<br />';
}


方法三 一次查询遍历分类 (三个字段)

function getcate2($pid=0,$level=0){
	$level++;
	$pdo = new PDO("mysql:host=localhost;dbname=lamp108",'root','root');
	//第一次pid为0 的时候查的是根分类
	$stmt = $pdo->query("select * from cate2 where pid={$pid}");
	$data = $stmt->fetchAll(2);

	foreach($data as $v){
		echo str_repeat('|&nbsp;',$level).'|-'.$v['name'].$v['id'].'<br />';
		
		//把第一个根分类的id传到下一次 
		//下一次查询二级分类
		getcate2($v['id'],$level);
	}
}
getcate2();

方法四 最简单无限分类

function getcate1(){
$pdo = new PDO("mysql:host=localhost;dbname=lamp108",'root','root');

$stmt = $pdo->query("SELECT *,concat(path,',',id) as fullpath FROM `cate1` order by fullpath;");

return  $stmt->fetchAll(2);
}

$data = getcate1();
foreach($data as $v){
	$level = substr_count($v['fullpath'],',');
	echo str_repeat('|&nbsp;',$level).'|-'.$v['name'].'<br/>';
}

程序来自网络收集----

你可能感兴趣的:(PHP无限级分类,无限分类方法)