ホームページ > バックエンド開発 > PHPチュートリアル > 無制限のカテゴリ、データベースからのデータのクエリ、配列でのカスタム並べ替えの再帰的実行

無制限のカテゴリ、データベースからのデータのクエリ、配列でのカスタム並べ替えの再帰的実行

WBOY
リリース: 2016-07-25 09:02:08
オリジナル
984 人が閲覧しました
無制限の分類、データベースからのデータのクエリ、および配列内でのカスタム ソートの再帰的な実行にも、多くの欠点があり、それらが適切に処理されていないことに気づきました。それについては 100 行以上あります。 。すべてではない
    class Tree{
  1. protected $arr = array(); //配列のソート
  2. protected $info = array(); //ストレージエラー情報
  3. protected $tree = array(); protected $flag = true; //フラグビット
  4. public function __construct()
  5. {
  6. }
  7. //データを取得
  8. public function data($fid,$arr)
  9. {
  10. $this->checkArr($arr) );
  11. $this->checking();
  12. $this->chindAll($fid);
  13. return $this->tree;
  14. }
  15. //パラメータが要件を満たしているかどうかを判断します
  16. protected function checkArr ($ val)
  17. {
  18. static $num = 0;
  19. if(is_array($val)){
  20. foreach($val as $Varr){
  21. $this->isKeyVal('id', $Varr, $num );
  22. $this->isKeyVal('parentid', $Varr, $num);
  23. $this->isKeyVal('name', $Varr, $num);
  24. $num++;
  25. }
  26. }
  27. $ this- >arr = $val;
  28. }
  29. //格納されたIDが配列であるかどうか
  30. protected function checkNum($val)
  31. {
  32. if(!is_numeric($val)){
  33. $this->info[ ] = ' 受信パラメータ '.$val.' は数値ではありません';
  34. $this->flag = false;
  35. $this->checking();
  36. }
  37. }
  38. //検証、出力エラーmessage
  39. 保護された関数 check( ){
  40. if(!$this->flag){
  41. echo '
    ';
  42. var_dump($this->info);
  43. exit();
  44. }
  45. }
  46. //配列キーが存在するか、値を持つかを判定
  47. protected function isKeyVal($key, $arr, $num)
  48. {
  49. if(!array_key_exists($key, $arr))
  50. {
  51. $this ->info[] = $num. '配列キー'.$key.'存在しません';
  52. $this->flag = false;
  53. }
  54. }
  55. // Son
  56. パブリック関数 getChind を取得します($fid)
  57. {
  58. static $num = 0 ;
  59. $arr = array();
  60. $this->checkNum($fid);
  61. foreach($this->arr as $key=>$row ){
  62. if( $row['parentid'] == $fid){
  63. $arr[] = $row;
  64. unset($this->arr[$key]);
  65. }
  66. }
  67. if(! empty($arr)){
  68. $num++;
  69. return $this->sortArr($arr);
  70. }else{
  71. return null;
  72. }
  73. }
  74. //息子と孫を取得します
  75. public function chindAll( $fid,$input=null)
  76. {
  77. static $ n =0;
  78. $n++;
  79. $arr = $this->getChind($fid);
  80. if(!empty($arr)){
  81. $count = count($arr);
  82. if(empty($ input)){
  83. for($i=0; $i $this->tree[$i] = $arr[ $i];
  84. }
コードをコピー
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート