关于ThinkPHP的递归方法

windcsg 2015-07-12 10:03:57
作为一名菜鸟级新手,之前是自己写的框架,由于涉及到了ExtJs前端和PHP后台的结合,就递归函数方面找了好久没有合适的,正好这次索性把网站移植到ThinkPHP,很多代码要重写和优化,在网上搜了一下,也没有找到详细的方法,因此自己写了一个,希望各位新人能学习,大神求指点。

在Org/Util下建一个Tool.class.php文件,内容如下:

namespace Org\Util;

class Tool {
/**
* @param $obj 在数据库中提取的数据源,这里不是obj,而是array的数据
* @param string $data 父级ID
* @return 递归后数组
*/
static public function getTree($obj,$data='ROOT'){
foreach ($obj as $key=>$value){
if($value['parent']==$data){
$obj[$key]['children'] = Tool::getTree($obj,$obj[$key]['id']);
if($obj[$key]['children']==''){
unset($obj[$key]['children']);
$obj[$key]['leaf']=true;
}
$arr[] = $obj[$key];
}
}
return $arr;
}
}

在控制器中调用代码如下:
$obj = $model->field()->where($map)->select();
$json = json_encode(Tool::getTree($obj));
echo $json;

因为要给ExtJs的TreeStore使用,因此输出是JSON。
...全文
165 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧