>백엔드 개발 >PHP 튜토리얼 >PHP는 재귀적 무한 classification_php 기술을 구현합니다.

PHP는 재귀적 무한 classification_php 기술을 구현합니다.

WBOY
WBOY원래의
2016-05-16 20:06:16888검색

일부 복잡한 시스템에서는 시스템의 유연성을 높이기 위해 정보 열의 무한한 분류 수준이 필요합니다. 그렇다면 PHP는 어떻게 무한 분류를 달성합니까? 이 기사에서는 무한한 분류를 달성하기 위해 mysql 데이터 테이블과 결합된 재귀 알고리즘을 사용합니다.
간단히 말해서 재귀는 프로그램 코드 조각을 반복적으로 호출하는 것입니다. 코드가 사용자 정의 함수에 작성되면 매개변수 및 기타 변수가 저장되고 점프하고 반환되기 전에 특정 조건에 도달할 때까지 함수가 반복적으로 호출됩니다. 해당 데이터.
MySQL
먼저, 제품 분류 정보를 기록하기 위한 데이터 테이블 클래스를 준비합니다. 테이블에는 3개의 필드가 있습니다. id: 분류 번호, 기본 키는 자동으로 증가합니다. title: 분류 이름, pid: 해당 분류가 속한 상위 분류의 ID입니다.
클래스 테이블 구조:

CREATE TABLE IF NOT EXISTS `class` ( 
 `id` mediumint(6) NOT NULL AUTO_INCREMENT, 
 `title` varchar(30) NOT NULL, 
 `pid` mediumint(6) NOT NULL DEFAULT '0', 
 PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

그림과 같이 데이터를 삽입한 후:

PHP
다양한 요구에 따라 서로 다른 형식의 두 가지 사용자 정의 함수를 제공합니다. 하나는 문자열을 반환하고 다른 하나는 배열을 반환합니다. 두 함수 모두 재귀적 방법을 사용합니다. 먼저 문자열 형식을 반환하는 함수를 살펴보겠습니다.

function get_str($id = 0) { 
 global $str; 
 $sql = "select id,title from class where pid= $id"; 
 $result = mysql_query($sql);//查询pid的子类的分类 
 if($result && mysql_affected_rows()){//如果有子类 
  $str .= '<ul>'; 
  while ($row = mysql_fetch_array($result)) { //循环记录集 
   $str .= "<li>" . $row['id'] . "--" . $row['title'] . "</li>"; //构建字符串 
   get_str($row['id']); //调用get_str(),将记录集中的id参数传入函数中,继续查询下级 
  } 
  $str .= '</ul>'; 
 } 
 return $str; 
} 

위 함수 get_str()은 재귀를 통해 하위 수준 카테고리를 지속적으로 쿼리하고 최종적으로 문자열을 반환합니다. 프로젝트 필요에 따라 str을 수정하고 최종적으로 무한 계층 목록을 생성할 수 있습니다.

include_once('connect.php'); //连接数据库,connect.php文件自己写一个啊 
echo get_str(0); //输出无限级分类 

효과는 다음과 같습니다.

그런 다음 배열 형식을 반환하는 함수도 살펴보겠습니다.

function get_array($id=0){ 
 $sql = "select id,title from class where pid= $id"; 
 $result = mysql_query($sql);//查询子类 
 $arr = array(); 
 if($result && mysql_affected_rows()){//如果有子类 
  while($rows=mysql_fetch_assoc($result)){ //循环记录集 
   $rows['list'] = get_array($rows['id']); //调用函数,传入参数,继续查询下级 
   $arr[] = $rows; //组合数组 
  } 
  return $arr; 
 } 
} 

get_array() 함수는 우리가 기대하는 배열을 반환하므로 저자는 배열을 가져오기 위해 get_array()를 사용할 것을 권장합니다. 예를 들어 배열에 대한 모든 작업을 수행할 수 있습니다. 배열을 json 형식 데이터로 프런트엔드 페이지에 전달하면 프런트엔드 페이지는 json 데이터를 구문 분석하여 분류 정보를 유연하게 표시할 수 있습니다. 예를 들어 트리 구조의 카테고리 목록, 드롭다운 카테고리 목록 등이 있습니다.

include_once('connect.php'); //连接数据库 
$list = get_array(0); //调用函数 
print_r($list); //输出数组 

출력 효과는 다음과 같습니다.

json 형식으로 데이터를 출력하려면 다음을 사용하세요.

echo json_encode($list); 

위의 방법은 PHP를 사용하여 재귀 무한 분류를 달성하는 방법을 가르쳐줍니다. 이 기사가 학습에 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.