無制限のカテゴリ、データベースからのデータのクエリ、配列でのカスタム並べ替えの再帰的実行
リリース: 2016-07-25 09:02:08
無制限の分類、データベースからのデータのクエリ、および配列内でのカスタム ソートの再帰的な実行にも、多くの欠点があり、それらが適切に処理されていないことに気づきました。それについては 100 行以上あります。 。すべてではない
class Tree{- protected $arr = array(); //配列のソート
- protected $info = array(); //ストレージエラー情報
- protected $tree = array(); protected $flag = true; //フラグビット
-
- public function __construct()
- {
-
- }
- //データを取得
- public function data($fid,$arr)
- {
- $this->checkArr($arr) );
- $this->checking();
- $this->chindAll($fid);
- return $this->tree;
- }
-
- //パラメータが要件を満たしているかどうかを判断します
- protected function checkArr ($ val)
- {
- static $num = 0;
- if(is_array($val)){
- foreach($val as $Varr){
- $this->isKeyVal('id', $Varr, $num );
- $this->isKeyVal('parentid', $Varr, $num);
- $this->isKeyVal('name', $Varr, $num);
- $num++;
- }
- }
- $ this- >arr = $val;
- }
- //格納されたIDが配列であるかどうか
- protected function checkNum($val)
- {
- if(!is_numeric($val)){
- $this->info[ ] = ' 受信パラメータ '.$val.' は数値ではありません';
- $this->flag = false;
- $this->checking();
- }
- }
- //検証、出力エラーmessage
- 保護された関数 check( ){
- if(!$this->flag){
- echo '
'; - var_dump($this->info);
- exit();
- }
- }
-
- //配列キーが存在するか、値を持つかを判定
- protected function isKeyVal($key, $arr, $num)
- {
- if(!array_key_exists($key, $arr))
- {
- $this ->info[] = $num. '配列キー'.$key.'存在しません';
- $this->flag = false;
-
- }
- }
-
- // Son
- パブリック関数 getChind を取得します($fid)
- {
- static $num = 0 ;
- $arr = array();
- $this->checkNum($fid);
- foreach($this->arr as $key=>$row ){
- if( $row['parentid'] == $fid){
- $arr[] = $row;
- unset($this->arr[$key]);
- }
- }
- if(! empty($arr)){
- $num++;
- return $this->sortArr($arr);
- }else{
- return null;
- }
- }
-
- //息子と孫を取得します
- public function chindAll( $fid,$input=null)
- {
- static $ n =0;
- $n++;
- $arr = $this->getChind($fid);
- if(!empty($arr)){
- $count = count($arr);
- if(empty($ input)){
- for($i=0; $i $this->tree[$i] = $arr[ $i];
- }
-
-
コードをコピー
|
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31