ホームページ  >  記事  >  バックエンド開発  >  左右の値の無限カテゴリのパス関係を取得します。

左右の値の無限カテゴリのパス関係を取得します。

WBOY
WBOYオリジナル
2016-07-25 08:50:57880ブラウズ
最近、
1 > 2
1 > 2 > 3
1 > 2 > 3 > 4
みたいな表示ができるものが必要なんですが、アルゴリズムが分からないので、かなり遠回りしてしまいました。 Tucao さん、もっと良い方法があるといいですね。
  1. public function getPaths($nodes)
  2. {
  3. $levels = $paths = array();
  4. // 配列レベルを再編成します
  5. foreach ($nodes as $id => $node)
  6. {
  7. $levels[ $node['level']][$id] = $node;
  8. }
  9. for ($i = 0; $i {
  10. if (is_array($levels[$ i]))
  11. {
  12. foreach ($levels[$i] as $level)
  13. {
  14. $id = $level['id'];
  15. $parent_id = $level['parent_id'];
  16. $parent = $ paths[$parent_id];
  17. // 親があり、現在のノードに追加されます
  18. if ($parent)
  19. {
  20. $paths[$id] = $parent;
  21. $paths[$id][] = $level [ 'id'];
  22. }
  23. else
  24. {
  25. $paths[$id][] = $level['id'];
  26. }
  27. }
  28. }
  29. }
  30. return $paths;
  31. }
コードをコピー


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