ホームページ  >  記事  >  バックエンド開発  >  PHP 再帰アルゴリズム PHP 再帰関数の無限分類

PHP 再帰アルゴリズム PHP 再帰関数の無限分類

WBOY
WBOYオリジナル
2016-07-25 08:54:02978ブラウズ
  1. <

  2. /**
  3. * 機能: すべてのカテゴリをクエリしてツリー メニューを生成します
  4. * @param int $pid 親 ID、クエリはデフォルトで最上位から開始されます
  5. */
  6. function toTree($pid=0){
  7. //上位カテゴリをすべてクエリします
  8. //ここではデータベース接続についてはあまり説明しません
  9. $model=M('Category'); モデルをインスタンス化します
  10. //マップ条件をクエリします
  11. $map=array(
  12. 'pid'=>$pid,
  13. );
  14. //クエリ
  15. $data=$model- >where($map)->select();
  16. //生成された HTML ツリー メニューを格納する新しい配列を定義します
  17. $html_array=array();
  18. // ループ分類
  19. $html='';
  20. $ padding=0; //インデント
  21. foreach($data as $k=>$v){
  22. //パスフィールドの値に基づいてインデントが実装されます
  23. $path=$v['path'];
  24. if ( $path&&strpos($v['path'],'-')){
  25. $path_array=@explode('-',$v['path']);
  26. $count=count($path_array)-1;
  27. $padding=$count*20; //次のレベルの分類は 20 ピクセルずつインデントされます
  28. }
  29. //現在の分類データ html
  30. $data_array[]='
  31. '.$v['name'].'
  32. ' ;< ;/p>
  33. //下位レベルのカテゴリの検索を再帰的に開始します

  34. $data_array[]=toTree($v['id']);//現在のカテゴリの ID を使用して再帰します親 ID
  35. }
  36. / /foreach ループが終了し、分類された HTML 配列をマージします
  37. $html.=implode('',$data_array());
  38. $html.='';
  39. //HTML ツリー メニューの構築が完了しました。それはとても簡単です!
  40. return $html;
  41. }

コードをコピー


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