利用数据库表实现无限级分类

 1,
		'name' => 'java',
		'pid' => 0,
		'path' => '0'
	),
	array(
		'id' => 2,
		'name' => 'php',
		'pid' => 0,
		'path' => '0'
	),
	array(
		'id' => 3,
		'name' => 'java基础',
		'pid' => 1,
		'path' => '0-1'
	),
	array(
		'id' => 4,
		'name' => 'php基础',
		'pid' => 2,
		'path' => '0-2'
	),
	array(
		'id' => 5,
		'name' => 'java数组',
		'pid' => 3,
		'path' => '0-1-3'
	),
	array(
		'id' => 6,
		'name' => 'php变量',
		'pid' => 4,
		'path' => '0-2-4'
	),
);

/*
echo '
';
print_r($data);
echo '
'; */ //设置分级字段 foreach($data as &$row) { //计算-出现的个数 $num = substr_count($row['path'],'-'); if($row['pid'] > 0) { //设置前缀字符 |-- $rep = '|'.str_repeat('--',$num); }else { $rep = ''; } //在数组里设置一个新的字段,存储分级的结果 $row['tree'] = $rep.$row['name']; } //取得分级的排序数组 /* 思路:用path+id 取得一个数值。利用此数值来排序 Array ( [0] => 0-1 [1] => 0-2 [2] => 0-1-3 [3] => 0-2-4 [4] => 0-1-3-5 [5] => 0-2-4-6 ) */ foreach($data as $row2) { $arr[] = $row2['path'].'-'.$row2['id']; } //排序 array_multisort($arr, $data);//第二个数组根据对应第一个数组后也进行排序。 /* $arr排序后的结果: Array ( [0] => 0-1 [1] => 0-1-3 [2] => 0-1-3-5 [3] => 0-2 [4] => 0-2-4 [5] => 0-2-4-6 ) */ //取得排序后的分级结果 foreach($data as $row3) { echo $row3['tree'].'
'; } /* java |--java基础 |----java数组 php |--php基础 |----php变量 */

 

你可能感兴趣的:(php)