关于ThinkPHP的递归方法

windcsg CSDN会员 windcsg 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
作为一名菜鸟级新手,之前是自己写的框架,由于涉及到了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。
...全文

相关推荐

评论
收藏 已收藏
分享
返回顶部
windcsg CSDN会员
基础编程 21,889 成员 140,329 内容