搜索
系统检测到您的用户名不符合规范:

会递归的高手来看一看

浏览:469 发布日期:2014年05月01日 分类:求助交流
public function treedata() {
header ( 'Content-Type: text/html; charset=utf-8' );
$treedata = M ( 'mod' )->order ( array (
'pid',
'sysorder',
'id'
) )->where ( 'menu=1' )->select ();
// P($treedata);
$tree = array ();
foreach ( $treedata as $row ) {

$obj = new \stdClass ();
$obj->text = $row ['name'];
$obj->attr = array (
'id' => $row ['id'],
'pid' => $row ['pid'],
'loadurl' => $row ['loadurl'],
'adminurl' => $row ['adminurl']
);

if (! empty ( $row ['loadurl'] )) {
$obj->children = array ();
}
if ($row ['pid'] > 0) {
$parent = $this->findParent ( $tree, $row ['pid'] );
if (isset ( $parent->children )) {
$parent->children [] = $obj;
} else {
$parent->children = array ();
$parent->children [] = $obj;
}
} else {
$tree [] = $obj;
}
}
$this->ajaxReturn ( $tree );
}
private function findParent($tree, $key) {
foreach ( $tree as $obj ) {
if ($obj->attr ['id'] == $key) {
return $obj;
}
if (isset ( $obj->children )) {
$parent = $this->findParent ( $obj->children, $key );
if ($parent)
return $parent;
}
}
return null;
}
这个用递归要怎样改造吖?各位高手;我想要的效果是这样的Array
(
[0] => stdClass Object
(
[text] => 系统助手
[attr] => Array
(
[id] => 386
[pid] => 0
[notice] =>
[loadurl] =>
[adminurl] =>
)

[children] => Array
(
[0] => stdClass Object
(
[text] => 提交反审请求
[attr] => Array
(
[id] => 476
[pid] => 386
[notice] =>
[loadurl] =>
[adminurl] => system/cancelbill
)

)

[1] => stdClass Object
(
[text] => 软件问题反馈
[attr] => Array
(
[id] => 387
[pid] => 386
[notice] =>
[loadurl] =>
[adminurl] => system/bugreport
)

)
最佳答案
评论() 相关
后面还有条评论,
评论支持使用[code][/code]标签添加代码
您需要登录后才可以评论 登录 | 立即注册
收藏
55306375
积分:1660 等级:LV3
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /