# 递归方式
function get_cate_name($cate_id, $cate_list) { if (empty($cate_list[$cate_id])) { return ''; } $cate = $cate_list[$cate_id]; $name = $cate['name']; if ($cate['parent_id'] > 0) { $name = get_cate_name($cate['parent_id'], $cate_list) . ' -> ' . $name; } return $name; } // 分类列表 $cate_list = [ 1 => ['name' => '家用电器', 'parent_id' => 0], 2 => ['name' => '冰箱', 'parent_id' => 1], 3 => ['name' => '电视', 'parent_id' => 1], 4 => ['name' => '柜式冰箱', 'parent_id' => 2], 5 => ['name' => '洗衣机', 'parent_id' => 3] ]; echo get_cate_name(5, $cate_list); // 家用电器 -> 电视 -> 洗衣机
# 非递归方式
function get_cate_name($cate_id, $cate_list) { $name = ''; while ($cate_id > 0) { if (empty($cate_list[$cate_id])) { break; } $cate = $cate_list[$cate_id]; $name = $cate['name'] . ' -> ' . $name; $cate_id = $cate['parent_id']; } return trim($name, ' -> '); } // 分类列表(同上) echo get_cate_name(5, $cate_list); // 家用电器 -> 电视 -> 洗衣机
递归方式需要在每个层级递归调用自己,而非递归方式通过循环不断查找父级分类,直到根分类。
两种方式的时间复杂度都是O(n),但递归方式会有函数调用的额外开销,空间复杂度也较高。
所以当分类层级较深时,非递归方式性能会更优。根据分类数据量和层级复杂度,选择合适的方式进行实现。对性能要求较高的情况,非递归方式会更为实用。
© 版权声明
本文刊载的所有内容,包括文字、图片、音频、视频、软件、程序、以及网页版式设计等部门来源于互联网,版权均归原作者所有!本网站提供的内容服务于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
联系信息:邮箱aoxolcom@163.com或见网站底部。
联系信息:邮箱aoxolcom@163.com或见网站底部。
THE END
请登录后发表评论
注册
社交帐号登录