详细的代码用文本写出来方便调试:
<?php// 定义栏目数据$categories = array( array('id'=>1, 'pid'=>0, 'name'=>'汽车'), array('id'=>2, 'pid'=>0, 'name'=>'电子产品'), array('id'=>3, 'pid'=>1, 'name'=>'SUV'), array('id'=>4, 'pid'=>1, 'name'=>'跑车'), array('id'=>5, 'pid'=>2, 'name'=>'手机'), array('id'=>6, 'pid'=>2, 'name'=>'条记本'), array('id'=>7, 'pid'=>3, 'name'=>'大型SUV'), array('id'=>8, 'pid'=>3, 'name'=>'中型SUV'), array('id'=>9, 'pid'=>5, 'name'=>'智好手机'), array('id'=>10, 'pid'=>5, 'name'=>'分外功能手机'),);// 定义分类函数function sortCategories($categories, $pid = 0) { $result = array(); foreach ($categories as $category) { if ($category['pid'] == $pid) { $category['child'] = sortCategories($categories, $category['id']); $result[] = $category; } } return $result;}// 调用分类函数$sortedCategories = sortCategories($categories);// 输出分类结果foreach ($sortedCategories as $category) { echo $category['name'] . "\n"; if (!empty($category['child'])) { foreach ($category['child'] as $child) { echo ' ' . $child['name'] . "\n"; } }}
给出的结果:
汽车 SUV 大型SUV 中型SUV 跑车电子产品 手机 智好手机 分外功能手机 条记本
