반응형
이 글은 TP5 틀에서 어떻게 재귀적으로 무한 등급을 구현할 수 있는지에 대한 내용입니다(코드 예시). 참고 가치가 있습니다. 필요한 친구가 있으면 참고하시어 도움이 되시기 바랍니다.
저는 tp5 프레임을 사용하는데, 프로젝트가 여러 곳에서 무한 등급을 사용하기 때문에 extend에서 직접 catetree 패킷을 만들고 catetee.php 클래스를 만들면 바로 거기에 있을 수 있습니다.컨트롤러 안에서 바로 인용하시면 돼요
<?php
namespace catetree;
class Catetree {
public function catetree($cateRes){
return $this->sort($cateRes);
}
public function sort($cateRes,$pid=0,$level=0){
static $arr=array();
foreach ($cateRes as $k => $v) {
if($v['pid']==$pid){
$v['level']=$level;
$arr[]=$v;
$this->sort($cateRes,$v['id'],$level+1);
}
}
return $arr;
}
//하위 항목 ID 가져오기
public function childrenids($cateid,$obj){
$data=$obj->field('id,pid')->select();
return $this->_childrenids($data,$cateid,TRUE);
}
private function _childrenids($data,$cateid,$clear=FALSE){
static $arr=array();
if($clear){
$arr=array();
}
foreach ($data as $k => $v) {
if($v['pid']==$cateid){
$arr[]=$v['id'];
$this->_childrenids($data,$v['id']);
}
}
return $arr;
}
//작업 표시줄 정렬
public function cateSort($data,$obj){
foreach ($data as $k => $v) {
$obj->update(['id'=>$k,'sort'=>$v]);
}
}
//일괄 삭제 처리
public function pdel($cateids){
foreach ($cateids as $k => $v) {
$childrenidsarr[]=$this->childrenids($v);
$childrenidsarr[]=(int)$v;
}
$_childrenidsarr=array();
foreach ($childrenidsarr as $k => $v) {
if(is_array($v)){
foreach ($v as $k1 => $v1) {
$_childrenidsarr[]=$v1;
}
}else{
$_childrenidsarr[]=$v;
}
}
$_childrenidsarr=array_unique($_childrenidsarr);
$this::destroy($_childrenidsarr);
}
}
반응형
'개발 꿀팁 > PHP' 카테고리의 다른 글
Thinkphp 업로드 클래스 이미지 업로드를 위한 코드 (0) | 2022.07.25 |
---|---|
php 구현은 혼합 인증 코드와 이미지 인증 코드를 생성하고 테스트한다(코드) (0) | 2022.07.25 |
thinkphp5에서 문자열을 가로채는 방법에는 어떤 것들이 있나요?(두 가지 방법으로 실현) (0) | 2022.07.25 |
php 인터페이스 보안: php 인터페이스 암호화를 위한 네 가지 시나리오 (0) | 2022.07.25 |
php는 open, fwrite를 이용하여 다양한 형식의 파일(코드)을 내보냅니다 (0) | 2022.07.25 |