>  기사  >  백엔드 개발  >  PHP에서 무한 분류를 구현하는 세 가지 방법

PHP에서 무한 분류를 구현하는 세 가지 방법

怪我咯
怪我咯원래의
2017-07-07 09:54:123092검색

오늘은 제가 PHP에서 무한분류 방법을 어떻게 배우고 정교하게 공부했는지 공유하겠습니다. PHP를 배우고 있는 친구들이 참고하면 좋을 것 같습니다.

PHP에는 대략 세 가지 무제한 분류 방법이 있습니다.

 1. 데이터베이스는 상위 클래스 ID를 설정하여 고유하게 색인화한 다음 재귀 함수 호출을 사용하여 무제한 분류를 달성합니다.

 2. 데이터베이스 설계; 특정 형식으로 정렬된 다음 mysql을 사용하여 핵심 함수인 concat를 쿼리합니다. 프로그램 구현은 비교적 간단합니다.

 3. 세 번째 유형은 정렬에 알고리즘과 데이터 구조가 사용되는 것 같습니다.

오늘은 두 번째 방법을 위주로 공유하겠습니다. 처음에 정보가 많이 나와서 정말 이해하기 어려웠습니다. 하지만 마침내 그 사실을 알게 되었기 때문에 이 글이 모든 분들께 도움이 되기를 바라는 마음으로 에세이를 작성하게 되었습니다.

1. 데이터베이스 디자인:  


코드는 다음과 같습니다.

-- 
-- Table structure for table `category` 
-- 
CREATE TABLE IF NOT EXISTS `category` ( 
`id` int(11) NOT NULL AUTO_INCREMENT, 
`catpath` varchar(255) DEFAULT NULL, 
`name` varchar(255) DEFAULT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ; 
-- 
-- Dumping data for table `category` 
-- 
INSERT INTO `category` (`id`, `catpath`, `name`) VALUES 
(1, '0', '网站首页'), 
(2, '0-1', 'Linux OS'), 
(3, '0-1', 'Apache服务器'), 
(4, '0-1', 'MySQL数据库'), 
(5, '0-1', 'PHP脚本语言'), 
(6, '0-1-2', 'Linux 系统教程'), 
(7, '0-1-2', 'Linux 网络技术'), 
(8, '0-1-2', 'Linux 安全基础'), 
(9, '0-1-2-7', 'Linux LAMP'), 
(10, '0-1-3-10', 'apache Server');

여기서 catpath의 - 링크 기호는 고정되어 있지 않으므로,,;
2. PHP 코드 구현:

코드는 다음과 같습니다:

$conn = mysql_connect ( 'localhost', 'root', '' ); 
mysql_select_db ( 'test', $conn ); 
mysql_query ( 'set names UTF8' ); 
$sql = "select id,concat(catpath,'-',id) as abspath,name from category order by abspath"; 
$query = mysql_query ( $sql ); 
while ( $row = mysql_fetch_array ( $query ) ) { 
/** 
* 第一种展示方法 
*/ 
/*$space = str_repeat ( '    ', count ( explode ( '-', $row ['abspath'] ) ) - 1 ); 
echo $space . $row [&#39;name&#39;] . &#39;<br>&#39;;*/ 
/** 
* 第二种展示方法 
*/ 
$space = str_repeat ( &#39;    &#39;, count ( explode ( &#39;-&#39;, $row [&#39;abspath&#39;] ) ) - 1 ); 
$option .= &#39;<option value="&#39; . $row [&#39;id&#39;] . &#39;">&#39; . $space . $row [&#39;name&#39;] . &#39;</option>&#39;; 
} 
echo &#39;<select name="opt">&#39; . $option . &#39;</select>&#39;;

위 렌더링:

   

여기서 주목해야 할 몇 가지 핵심 사항이 있습니다:
 1. concat 함수가 사용됩니다. 데이터베이스 쿼리 필드에서 아무것도 이해하지 못하는 경우 Google에 검색할 수 있습니다.
 2. 두 번째 장소는 주로 PHP에서 str_repeat를 사용하여 교묘하게 공백을 설정합니다.
오류가 있으면 chenghuiyong1987@gmail.com으로 이메일을 보내거나 메시지를 남겨주세요

위 내용은 PHP에서 무한 분류를 구현하는 세 가지 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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