ホームページ  >  記事  >  バックエンド開発  >  ノード ツリーをフォーマットするためのクラスは適切に記述されておらず、アルゴリズムもありませんが、使用できます。

ノード ツリーをフォーマットするためのクラスは適切に記述されておらず、アルゴリズムもありませんが、使用できます。

WBOY
WBOYオリジナル
2016-07-25 09:09:571065ブラウズ
データベースから取得した機密データを次のようにフォーマットします。

ニュース
--スポーツニュース
--エンターテインメントニュース
金融
--外国為替
--金融
  1. クラスツリー
  2. {
  3. /**生データ*/
  4. public $original;
  5. /**IDキー名*/
  6. public $id;
  7. /**父親IDのキー名*/
  8. public $parentId;
  9. /**初期化中のID*/
  10. protected $initId;
  11. /**ノードレベル*/
  12. protected $thisLevel = 0;
  13. /**最後の木* /
  14. protected $tree = array();
  15. /**
  16. * 构造関数数
  17. +---------------------------- --------------
  18. * @access public
  19. +---------------------------- -------------
  20. * @param array $original
  21. * コンストラクター
  22. +------------------------------------------ ---
  23. * @access public
  24. +---------------------------------------- --------
  25. * @param array $original 元データ
  26. * @param string $id 親 ID のキー名
  27. * @param string $parentId 親 ID のキー名
  28. +-------- ----------- -----------------------
  29. * @return void
  30. * @param string $id
  31. * 初期化
  32. +------------------------------------------ ---
  33. * @ access public
  34. +---------------------------------------- -----
  35. * @param array $original 元データ
  36. * @param string $id idのキー名
  37. * @param string $parentId 親idのキー名
  38. +------------- ----------------- -----------------------
  39. * @return void
  40. * @param string $parentId 父
  41. * 初期ノードを取得します
  42. +------------------------------------------ ----- ---
  43. * @access protected
  44. +------------------------------------- ----- ------
  45. * @param int $parentId 初期ノードのレベル
  46. +------------------------ ---------- ---------------
  47. * @return array $parentTree
  48. +---- --------------------------------------
  49. * @return void
  50. */
  51. public function __construct ($original='',$id='',$parentId='')
  52. {
  53. if($original && $id && $parentId)
  54. {
  55. $this->initialize($original,$id,$ parentId);
  56. }
  57. }
  58. /**
  59. * 初開始化
  60. +-------------------------------- ----------
  61. * @access public
  62. +--------------------------------- --------
  63. * @param array $original
  64. * サブツリーを取得
  65. +------------------------------------------ ---- ---
  66. * @access protected
  67. +------------------------------------ ---- ------
  68. * @param int $id ノード ID
  69. * @param string $levelTag インデントマーク
  70. +----------- -- ------------------------
  71. * @return void
  72. * @param string $id
  73. * ノードのレベルを取得します
  74. +----------------------------------------------------- ----- -------
  75. * @access protected
  76. +---------------------------- ----------------- -------------
  77. * @param int $parentId ノードの親 ID
  78. +----- ------------------- ------------------------
  79. * @return void
  80. * @param string $parentId 父
  81. * 完全なツリーを入手します
  82. +------------------------------------------ --- -------
  83. * @access public
  84. +--------------------------------- --------------- ------------------------
  85. * @param int $level どのレベルから取得するか
  86. * @param string $levelTag インデントタグ
  87. +-------------------------- -----------------------------------
  88. * @return array $this->tree 完全なツリー
  89. +-------- ----------------------------------
  90. * @return void
  91. */
  92. public functionInitialize($original, $id,$parentId)
  93. {
  94. $this->original = $original;
  95. $this->id = $id;
  96. $this->parentId = $parentId;
  97. }
  98. /**
  99. * 获取初节点
  100. +------------------------------------------ --
  101. * @access protected
  102. +----------------------------------------------------- -----
  103. * @param int $parentId 最初&#&
  104. +-------------------------------- --------------
  105. * @return array $parentTree
  106. */
  107. protected function getParentTree($parentId)
  108. {
  109. $parentTree = array();
  110. foreach($this-> ;元の $key=>$value)
  111. {
  112. if($value[$this->parentId] == $parentId)
  113. {
  114. array_push($parentTree,$value);
  115. }
  116. }
  117. return $parentTree;
  118. }
  119. /**&#&*/
  120. protected function getChildrenTree($id,$levelTag)
  121. {
  122. foreach($this->original as $key=>$value)
  123. {
  124. if($id == $value[$this->parentId])
  125. {
  126. if($levelTag)
  127. {
  128. $this->getLevel($value[$this->parentId]);
  129. $value ['levelTag'] = str_repeat($levelTag,$this->thisLevel);
  130. $this->thisLevel = 0;
  131. }
  132. $this->tree[] = $value;
  133. $this-> getChildrenTree($value[$this->id],$levelTag);
  134. }
  135. }
  136. }
  137. /**
  138. * 获取&🎜 +------------- ------------------------------------🎜 * @access protected🎜 +------ ----------------------------------------🎜 * @param int $parentId 节点的父id🎜 +------------------------------------------ ----🎜 * @return void🎜 */🎜 protected function getLevel($parentId)🎜 {🎜 foreach($this->gt;original as $key=>$value)🎜 {🎜 if($parentId == $ value[$this->id] && $parentId != $this->initId)🎜 {🎜 $this->thisLevel++;🎜 $this->getLevel($value[$this->parentId]) ;🎜 }🎜 }🎜 }🎜🎜🎜 /**&*/🎜 public function getTree($parentId=0,$levelTag='')🎜 {🎜 $this->initId = $parentId;🎜 $parentTree = $this->getParentTree($parentId);🎜🎜 foreach($parentTree as $key=>$value)🎜 {🎜 $this->tree[] = $value;🎜 $this->getChildrenTree( $value[$this->id],$levelTag);🎜 }🎜🎜 return $this->tree;🎜 }🎜🎜}
  139. $conf = array(
  140. 1 => array('id'=>'1','parentid'=>0,'name'=>'1'),
  141. 2 => ; array('id'=>'2','parentid'=>0,'name'=>'2'),
  142. 3 => array('id'=>'3','親 ID'=>1,'名前'=>'1-1'),
  143. 4 => array('id'=>'4','親 ID'=>1,'名前'=> ;'1-2'),
  144. 5 => array('id'=>'5','parentid'=>2,'name'=>'2-1'),
  145. 6 => ; array('id'=>'6','parentid'=>3,'name'=>'1-1-1'),
  146. 7 => 7','parentid'=>4,'name'=>'1-2-1'),
  147. 8 => array('id'=>8','parentid'=>5 ,'name'=>'2-1-1'),
  148. 9 => array('id'=>9','parentid'=>8,'name'=>'2- 1-1-1')
  149. );
  150. $tree = 新しいツリー($conf,'id','parentid');
  151. $arr = $tree->getTree(0,'    ');
  152. foreach($arr as $val)
  153. {
  154. if($val['levelTag'])
  155. {
  156. echo $val['levelTag'].'|- ';
  157. }
  158. echo $val[' name'].'
    ';
  159. }
  160. ?>
复制代码
  1. クラスツリー
  2. {
  3. /**生データ*/
  4. public $original;
  5. /**IDキー名*/
  6. public $id;
  7. /**父親IDのキー名*/
  8. public $parentId;
  9. /**初期化中のID*/
  10. protected $initId;
  11. /**ノードレベル*/
  12. protected $thisLevel = 0;
  13. /**最後の木* /
  14. protected $tree = array();
  15. /**
  16. * 构造関数数
  17. +---------------------------- --------------
  18. * @access public
  19. +---------------------------- -------------
  20. * @param array $original
  21. * コンストラクター
  22. +------------------------------------------ ---
  23. * @access public
  24. +---------------------------------------- --------
  25. * @param array $original 元データ
  26. * @param string $id 親 ID のキー名
  27. * @param string $parentId 親 ID のキー名
  28. +-------- ----------- -----------------------
  29. * @return void
  30. * @param string $id
  31. * 初期化
  32. +------------------------------------------ ---
  33. * @ access public
  34. +---------------------------------------- --------
  35. * @param array $original オリジナルデータ
  36. * @param string $id id のキー名
  37. * @param string $parentId 親 id のキー名
  38. +------ -------------------- -----------------------
  39. * @return void
  40. * @param string $parentId 父
  41. * 初期ノードを取得します
  42. +------------------------------------------ ----- ---
  43. * @access protected
  44. +------------------------------------- ----- ------
  45. * @param int $parentId 初期ノードのレベル
  46. +------------------------ ---------- ---------------
  47. * @return array $parentTree
  48. +---- --------------------------------------
  49. * @return void
  50. */
  51. public function __construct ($original='',$id='',$parentId='')
  52. {
  53. if($original && $id && $parentId)
  54. {
  55. $this->initialize($original,$id,$ parentId);
  56. }
  57. }
  58. /**
  59. * 初開始化
  60. +-------------------------------- ----------
  61. * @access public
  62. +--------------------------------- --------
  63. * @param array $original
  64. * サブツリーを取得
  65. +------------------------------------------ ---- ---
  66. * @access protected
  67. +------------------------------------ ---- ------
  68. * @param int $id ノード ID
  69. * @param string $levelTag インデントマーク
  70. +----------- -- ------------------------
  71. * @return void
  72. * @param string $id
  73. * ノードのレベルを取得します
  74. +----------------------------------------------------- ----- -------
  75. * @access protected
  76. +---------------------------- ----------------- -------------
  77. * @param int $parentId ノードの親 ID
  78. +----- ------------------- ------------------------
  79. * @return void
  80. * @param string $parentId 父
  81. * 完全なツリーを入手します
  82. +------------------------------------------ ------ -------
  83. * @access public
  84. +---------------------------- ------------------- -------------
  85. * @param int $level どのレベルから取得するか
  86. * @param string $levelTagタグをインデントします
  87. +--------------- ----------------------------- ---
  88. * @return array $this->tree 完全なツリー
  89. +-------- ----------------------------------
  90. * @return void
  91. */
  92. public functionInitialize($original, $id,$parentId)
  93. {
  94. $this->original = $original;
  95. $this->id = $id;
  96. $this->parentId = $parentId;
  97. }
  98. /**
  99. * 获取初节点
  100. +------------------------------------------ --
  101. * @access protected
  102. +----------------------------------------------------- -----
  103. * @param int $parentId 最初&#&
  104. +-------------------------------- --------------
  105. * @return array $parentTree
  106. */
  107. protected function getParentTree($parentId)
  108. {
  109. $parentTree = array();
  110. foreach($this-> ;元の $key=>$value)
  111. {
  112. if($value[$this->parentId] == $parentId)
  113. {
  114. array_push($parentTree,$value);
  115. }
  116. }
  117. return $parentTree;
  118. }
  119. /**&#&*/
  120. protected function getChildrenTree($id,$levelTag)
  121. {
  122. foreach($this->original as $key=>$value)
  123. {
  124. if($id == $value[$this->parentId])
  125. {
  126. if($levelTag)
  127. {
  128. $this->getLevel($value[$this->parentId]);
  129. $value ['levelTag'] = str_repeat($levelTag,$this->thisLevel);
  130. $this->thisLevel = 0;
  131. }
  132. $this->tree[] = $value;
  133. $this-> getChildrenTree($value[$this->id],$levelTag);
  134. }
  135. }
  136. }
  137. /**
  138. * 获取&🎜 +------------- ------------------------------------🎜 * @access protected🎜 +------ ----------------------------------------🎜 * @param int $parentId 节点的父id🎜 +------------------------------------------ ----🎜 * @return void🎜 */🎜 protected function getLevel($parentId)🎜 {🎜 foreach($this->gt;original as $key=>$value)🎜 {🎜 if($parentId == $ value[$this->id] && $parentId != $this->initId)🎜 {🎜 $this->thisLevel++;🎜 $this->getLevel($value[$this->parentId]) ;🎜 }🎜 }🎜 }🎜🎜🎜 /**&*/🎜 public function getTree($parentId=0,$levelTag='')🎜 {🎜 $this->initId = $parentId;🎜 $parentTree = $this->getParentTree($parentId);🎜🎜 foreach($parentTree as $key=>$value)🎜 {🎜 $this->tree[] = $value;🎜 $this->getChildrenTree( $value[$this->id],$levelTag);🎜 }🎜🎜 return $this->tree;🎜 }🎜🎜}
  139. $conf = array(
  140. 1 => array('id'=>'1','parentid'=>0,'name'=>'1'),
  141. 2 => ; array('id'=>'2','parentid'=>0,'name'=>'2'),
  142. 3 => array('id'=>'3','親 ID'=>1,'名前'=>'1-1'),
  143. 4 => array('id'=>'4','親 ID'=>1,'名前'=> ;'1-2'),
  144. 5 => array('id'=>'5','parentid'=>2,'name'=>'2-1'),
  145. 6 => ; array('id'=>'6','parentid'=>3,'name'=>'1-1-1'),
  146. 7 => 7','parentid'=>4,'name'=>'1-2-1'),
  147. 8 => array('id'=>8','parentid'=>5 ,'name'=>'2-1-1'),
  148. 9 => array('id'=>9','parentid'=>8,'name'=>'2- 1-1-1')
  149. );
  150. $tree = 新しいツリー($conf,'id','parentid');
  151. $arr = $tree->getTree(0,'    ');
  152. foreach($arr as $val)
  153. {
  154. if($val['levelTag'])
  155. {
  156. echo $val['levelTag'].'|- ';
  157. }
  158. echo $val[' name'].'
    ';
  159. }
  160. ?>
复制代码


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。