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遞迴
- 遍歷二叉樹-------遞迴&非遞迴二叉樹遞迴
- 通用-遞迴樹結構遞迴
- 【C++】翻轉二叉樹(遞迴、非遞迴)C++二叉樹遞迴
- 遞迴函式-樹形列表遞迴函式
- 樹遞迴問題的求解遞迴
- 三、遞迴樹分析法遞迴
- 好大一棵樹
- Vue遞迴元件+Vuex開發樹形元件Tree--遞迴元件Vue遞迴元件
- 二叉樹的四種遍歷(遞迴與非遞迴)二叉樹遞迴
- 一道Postgresql遞迴樹題SQL遞迴
- 二叉樹的遞迴套路二叉樹遞迴
- 初學 PHP 函式的遞迴PHP函式遞迴
- 全域性元件實現遞迴樹,避免迴圈引用元件遞迴
- 遍歷二叉樹的遞迴與非遞迴程式碼實現二叉樹遞迴
- python 遞迴樹狀結構 和 排序Python遞迴排序
- 遞迴樹形查詢所有分類遞迴
- 二叉平衡樹 python 列表 遞迴Python遞迴
- 二叉樹的前中後序遍歷(遞迴和非遞迴版本)二叉樹遞迴
- python實現二叉樹及其七種遍歷方式(遞迴+非遞迴)Python二叉樹遞迴
- 二叉樹——後序遍歷的遞迴與非遞迴演算法二叉樹遞迴演算法
- 樹3-二叉樹非遞迴遍歷(棧)二叉樹遞迴
- 什麼是遍歷二叉樹,JavaScript實現二叉樹的遍歷(遞迴,非遞迴)二叉樹JavaScript遞迴
- Java實現遞迴查詢樹結構Java遞迴
- 遞迴判斷是否二叉平衡樹遞迴
- 遞迴和尾遞迴遞迴
- 【譯】繪製一棵漂亮的樹
- 非遞迴先序遍歷二叉樹遞迴二叉樹
- js樹型結構資料簡易遞迴JS遞迴
- Day14 | 二叉樹遞迴遍歷二叉樹遞迴
- 二叉樹 遞迴 洛谷P1364二叉樹遞迴
- 快速排序【遞迴】【非遞迴】排序遞迴
- 用 vue + d3 畫一棵樹Vue
- 如何判斷一棵樹是否是二叉平衡樹~
- 資料結構-樹以及深度、廣度優先遍歷(遞迴和非遞迴,python實現)資料結構遞迴Python
- Vue遞迴元件實現樹形結構選單Vue遞迴元件
- 遞迴遍歷樹狀結構優雅實現遞迴