php 遞迴一棵樹
基於yii2框架:
controller:
public function actionDigui()
{
$uid = $this->current_user['uid'];
$userid = '';
$dataWxUsers = WxUsers::getWxusersByuid($uid);
if (!empty($dataWxUsers)) {
$userid = $dataWxUsers['userid'];
}
$mydata = self::getWeiXininfo($userid);
$data = WxUserRelation::getMySub($userid);
$list = [
'name' => isset($mydata['nickname']) ? $mydata['nickname'] : '',
'title' => '下級列表',
'relationship' => ['children_num'=>count($data)],
'children'=>$data
];
print_r($list);
die;
}
WxUserRelation這個model中新增2個方法:
public static function getMySub($userid)
{
$mysub = self::getSubordinate($userid);
if (!empty($mysub)) {
foreach ($mysub as $key => $value) {
$mysub[$key]['children'] = self::getMySub($value['userid']);
}
return $mysub;
}
}
/**
* 獲取我的下級
* @param $userid
* @return array|\yii\db\ActiveRecord[]
*/
public static function getSubordinate($userid)
{
if (empty($userid)) {
return [];
}
$data = self::find()->select('userid')->where(['parentuserid' => $userid])->asArray()->all();
$number = self::find()->select('userid')->where(['parentuserid' => $userid])->count();
if (!empty($data)) {
foreach ($data as $key => $value) {
$weixininfo = self::getWeiXininfo($value['userid']);
$data[$key]['title'] = !isset($value['userid']) ? '' : $value['userid'];
$data[$key]['name'] = isset($weixininfo['nickname']) ? $weixininfo['nickname'] : '';
$data[$key]['relationship'] = [
'children_num' => $number,
'parent_num' => 1,
'sibling_num' => 1
];
}
}
return empty($data) ? [] : $data;
}
http://www.htmleaf.com/jQuery/Chart/201602233135.html
相關文章
- 如何優雅的使用javascript遞迴畫一棵結構樹JavaScript遞迴
- PHP 樹-不需要遞迴的實現方法PHP遞迴
- 遍歷二叉樹-------遞迴&非遞迴二叉樹遞迴
- 通用-遞迴樹結構遞迴
- php遞迴函式PHP遞迴函式
- 【C++】翻轉二叉樹(遞迴、非遞迴)C++二叉樹遞迴
- 三、遞迴樹分析法遞迴
- 遞迴函式-樹形列表遞迴函式
- 樹遞迴問題的求解遞迴
- Vue遞迴元件+Vuex開發樹形元件Tree--遞迴元件Vue遞迴元件
- 二叉樹的四種遍歷(遞迴與非遞迴)二叉樹遞迴
- 【資料結構】二叉樹遍歷(遞迴+非遞迴)資料結構二叉樹遞迴
- 一道Postgresql遞迴樹題SQL遞迴
- 二叉樹遞迴練習二叉樹遞迴
- 二叉樹的遞迴套路二叉樹遞迴
- 全域性元件實現遞迴樹,避免迴圈引用元件遞迴
- 如何列印一棵樹(Java)Java
- 遍歷二叉樹的遞迴與非遞迴程式碼實現二叉樹遞迴
- 二叉樹建立及遍歷演算法(遞迴及非遞迴)二叉樹演算法遞迴
- 遞迴樹形查詢所有分類遞迴
- 二叉樹非遞迴遍歷二叉樹遞迴
- Swift遞迴列舉與紅黑樹Swift遞迴
- Mysql 實現樹狀遞迴查詢MySql遞迴
- 初學 PHP 函式的遞迴PHP函式遞迴
- PHP遞迴遍歷資料夾PHP遞迴
- 二叉樹的前中後序遍歷(遞迴和非遞迴版本)二叉樹遞迴
- 二叉樹——後序遍歷的遞迴與非遞迴演算法二叉樹遞迴演算法
- [java] 二叉樹的後序遍歷(遞迴與非遞迴實現)Java二叉樹遞迴
- 樹3-二叉樹非遞迴遍歷(棧)二叉樹遞迴
- 什麼是遍歷二叉樹,JavaScript實現二叉樹的遍歷(遞迴,非遞迴)二叉樹JavaScript遞迴
- 二叉平衡樹 python 列表 遞迴Python遞迴
- Java實現遞迴查詢樹結構Java遞迴
- python 遞迴樹狀結構 和 排序Python遞迴排序
- python實現二叉樹及其七種遍歷方式(遞迴+非遞迴)Python二叉樹遞迴
- 遞迴和尾遞迴遞迴
- 快速排序【遞迴】【非遞迴】排序遞迴
- 非遞迴先序遍歷二叉樹遞迴二叉樹
- 【刷題】二叉樹非遞迴遍歷二叉樹遞迴