在循环中使PHP数组中的层次结构
发布时间:2020-12-13 17:05:55 所属栏目:PHP教程 来源:网络整理
导读:我已经和这样的问题争了好几个小时了.为了加速我的网页,我请求数据库只获取所有类别一次,然后想要使用 PHP对数组进行排序. Array( [0] = Array ( [id] = 1 [name] = name1 [parent] = 0 [children] = ) [1] = Array ( [id] = 2 [name] = name2 [parent] = 1
我已经和这样的问题争了好几个小时了.为了加速我的网页,我请求数据库只获取所有类别一次,然后想要使用
PHP对数组进行排序.
Array ( [0] => Array ( [id] => 1 [name] => name1 [parent] => 0 [children] => ) [1] => Array ( [id] => 2 [name] => name2 [parent] => 1 [children] => ) ) 我需要得到这样的东西 Array ( [0] => Array ( [id] => 1 [name] => name1 [parent] => 0 [children] => Array ( [id] => 2 [name] => name2 [parent] => 1 [children] => ) ) ) 问题在于它适用于任何级别的层次结构.这样它就可以在循环中工作.请帮忙! 解决方法
这里有很多减少开销的解决方案.但是,如果不知道你的约束是什么,就很难推荐一种方法.
例如.: >使用邻接模型 – 请参阅我对dnagirl答案的评论 将示例2更接近代码….类似…… function build_tree(&$unsorted,$start_node) { $out=array(); foreach($unsorted as $key=>$node) { if ($node['parent']==$start_node) { $node['children']=build_tree($unsorted,$key); unset($unsorted[$key]); $out[]=$node; } } return $out; } $threaded_tree=build_tree($list_of_nodes,0); // assumes that the root is the first element (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |