PHP無限級分類方法及代碼

來源:互聯網
上載者:User
關鍵字 網路程式設計 PHP教程

php教程 無限級分類


class Trees{


 private $_keyId = 'Id';


 private $_keyName = 'Name';


 private $_keyFid = 'Fid';


 


 function __construct($keyId='',$keyName='',$keyFid='')


 {


  if($keyId==""){$this->_keyId = $this->_keyId;} else{$this->_keyId = $keyId;}


  if($keyName==""){$this->_keyName = $this->_keyName;} else{$this->_keyName = $keyName;}


  if($keyFid==""){$this->_keyFid = $this->_keyFid;} else{$this->_keyFid = $keyFid;}


 }


 


 public function treeListAll($fid,$step=0,&$fromArray,&$resultArray)


 {


  $step++;


  foreach ($fromArray as $k=>$v){


   if($v[$this->_keyFid] == $fid){


$newArray[] = $v;


   }


  }


  if(isset($newArray)){


   foreach ($newArray as $k=>$v){


    $this->treeListAll($v[$this->_keyId],$step,$fromArray,$resultArray);


    $v['Step'] = $step;


    $resultArray[] = $v;


   }


  }


 }


 


 public function getTreeListAll($fid=0,$step=0,&$fromArray,&$resultArray)


 {


  $step++;


  foreach ($fromArray as $k=>$v){


   if($v[$this->_keyFid] == $fid){


    $newArray[] = $v;


   }


  }


  if(isset($newArray)){


foreach ($newArray as $k=>$v){


    $this->getTreeListAll($v[$this->_keyId],$step,$fromArray,$resultArray);


    $v['Step'] = $step;


    $resultArray[] = $v;


   }


  } 


 }


 


 public function getTreeList($id = 0,&$fromArray)


 {


  $resultArray = array();


  $this->getTreeListAll($id,0,$fromArray,$resultArray);


  $resultArray = array_reverse($resultArray);


  return $resultArray;


 }


 


 public function getTreeArray($id = 0,&$fromArray)


 {


  $result_one_array = $this->getTreeList($id,$fromArray);


foreach ($result_one_array as $k=>$v){


   $result_two_array[] = array($v[$this->_keyId]);


  }


  if(isset($result_two_array)){


  for ($i=0;$i<count($result_two_array);$i++){


   for ($j=0;$j<count($result_two_array[$i]);$j++){


    $result[] = $result_two_array[$i][$j];


   }


  }


  }else{


   $result = array();


  }


  return $result;


 }

 public function treeListAllTop($fid,$step=0,&$fromArray,&$resultArray)


 {


  $step++;


  foreach ($fromArray as $k=>$v){


   if($v[$this->_keyId] == $fid){


    $newArray[] = $v;


}


  }


  if(isset($newArray)){


   foreach ($newArray as $k=>$v){


    $this->treeListAllTop($v[$this->_keyFid],$step,$fromArray,$resultArray);


    $v['Step'] = $step;


    $resultArray[] = $v;


   }


  }


 }


 


 public function getTreeListAllTop($fid=0,$step=0,&$fromArray,&$resultArray)


 {


  $step++;


  foreach ($fromArray as $k=>$v){


   if($v[$this->_keyId] == $fid){


    $newArray[] = $v;


   }


  }


  if(isset($newArray)){


   foreach ($newArray as $k=>$v){


$this->getTreeListAllTop($v[$this->_keyFid],$step,$fromArray,$resultArray);


    $v['Step'] = $step;


    $resultArray[] = $v;


   }


  } 


 }


 


 public function getTreeListTop($id = 0,&$fromArray)


 {


  $resultArray = array();


  $this->getTreeListAllTop($id,0,$fromArray,$resultArray);


  $resultArray = array_reverse($resultArray);


  return $resultArray;


 }


 


 public function getTreeArrayTop($id = 0,&$fromArray)


 {


  $result_one_array = $this->getTreeListTop($id,$fromArray);


  foreach ($result_one_array as $k=>$v){


$result_two_array[] = array($v[$this->_keyFid]);


  }


  if(isset($result_two_array)){


  for ($i=0;$i<count($result_two_array);$i++){


   for ($j=0;$j<count($result_two_array[$i]);$j++){


    $result[] = $result_two_array[$i][$j];


   }


  }


  }else{


   $result = array();


  }


  return $result;


 }


 


 public function makeOptionString($sourcArray,$firstHint="頂級分類",$selectId=array('-1'),$type=0)


 {


  if($type==0){


   if($firstHint != ""){


    $str = '<option value="0">'.$firstHint.' </option>';


   }else{


$str = '';


   }


   foreach ($sourcArray as $value){


    $level="";


    for($i=1;$i<$value['Step'];$i++){


     $level =$level." ----|";


    }


    $selectStr = "";


    if(in_array($value[$this->_keyId],$selectId)){


     $selectStr = "selected";


    }else{


    


    }


    $str.='<option value="'.$value[$this->_keyId].'" '.$selectStr.' >|'. $level.$value[$this->_keyName]." </option>";


    $level="";


   }


  }else{


   $flagStep =-1;


$str = '<option value="0">'.$firstHint.' </option>';


   foreach ($sourcArray as $value){


    $level="";


    for($i=1;$i<$value['Step'];$i++){


     $level =$level." ----|";


    }


    $selectStr = "";


    if($type==$value[$this->_keyId]){


     $flagStep = $value['Step'];


    }else{


     if($flagStep != -1 && $value['Step']>$flagStep){


    


     }else{


      if($flagStep != -1 && $value['Step']<=$flagStep){


       $flagStep = -1;


}


      if($value[$this->_keyId] == $selectId){


       $selectStr = "selected";


      }


      $str.='<option value="'.$value[$this->_keyId].'" '.$selectStr.' >|'. $level.$value[$this->_keyName]." </option>";


     }


    }


   


    $level="";


   }


  }


  return $str;


 }


}


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.