PHP 無限分類三種方式 非函式的遞迴呼叫!

2022-10-06 13:48:21 字數 1773 閱讀 4807

php無限分類大致有三種方式,

1、資料庫通過設定父類id來進行唯一索引,然後使用函式的遞迴呼叫實現無限分類;

2、資料庫設計通過特定格式進行排列,然後使用mysql查詢關鍵函式:concat。程式實現比較簡單;

3、第三種不是太了解, 好像要使用到演算法和資料結構進行排列。

今天我主要分享下第二種方式,一開始也是找了很多資料,確實比較難理解。不過最終還是給搞明白了,因此記下隨筆,希望通過這篇文章能夠幫助到大家。

一、資料庫設計:

複製** **如下:

-- -- 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', wiixbwjq'apache server');

這裡說明下,catpath的-鏈結符號不是固定的,可以選擇,;等特殊符號。

二、 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 owww.cppcns.comrder by abspath";

$query = mysql_query ( $sql );

while ( $row = mysql_fetch_array ( $query ) )

echo '' . $option . '';

上效果圖:

這裡有幾個關鍵的地方需要注意下:

1、在資料庫查詢欄位是用了concat函式,不了解的地方可以google下。 

2、第二個地方主要是用到了php中的str_repeat巧妙的設定了空格。

有錯誤之處,望mail: [email protected]或者留言

本文標題: php 無限分類三種方式 非函式的遞迴呼叫!

本文位址:

PHP 無限分類三種方式 非函式的遞迴呼叫!

php無限分類大致有三種方式,1 資料庫通過設定父類id來進行唯一索引,然後使用函式的遞迴呼叫實現無限分類 2 資料庫設計通過特定格式進行排列,然後使用mysql查詢關鍵函式 concat。程式實現比較簡單 3 第三種不是太了解,好像要使用到演算法和資料結構進行排列。今天我主要分享下第二種方式,一開...

php 遞迴函式的三種實現方式

遞迴函式是我們常用到的一類函式,最基本的特點是函式自身呼叫自身,但必須在呼叫自身前有條件判斷,否則會無限呼叫下去。實現遞迴函式可以採取什麼方式呢?本文列出了三種基本方式。理解其原來需要一定的基礎知識水品,包括對全域性變數,引用,靜態變數的理解,也需對他們的作用範圍有所理解。遞迴函式也是解決無限級分類...

php 遞迴函式的三種實現方式

php 遞迴函式的三種實現方式 遞迴函式是我們常用到的一類函式,最基本的特點是函式自身呼叫自身,但必須在呼叫自身前有條件判斷,否則無限無限呼叫下去。實現遞迴函式可以採取什麼方式呢?本文列出了三種基本方式。理解其原來需要一定的基礎知識水品,包括對全域性變數,引用,靜態變數的理解,也需對他們的作用範圍有...