일부 복잡한 시스템에서는 시스템의 유연성을 높이기 위해 정보 열의 무한한 분류 수준이 필요합니다. 그렇다면 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를 사용하여 재귀 무한 분류를 달성하는 방법을 가르쳐줍니다. 이 기사가 학습에 도움이 되기를 바랍니다.