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