php 递归分销角色,PHP递归无限分类
我們面試程序開發(fā)的時候,經常會被問到遞歸的問題。今天我們在本文中以“素材火的特效分類表”作為演示,使用PHP遞歸結合Mysql實現(xiàn)無限級分類。
難易:初級
下載資源
下載積分:
50
積分
遞歸簡單的說就是一段程序代碼的重復調用,當把代碼寫到一個自定義函數(shù)中,將參數(shù)等變量保存,函數(shù)中重復調用函數(shù),直到達到某個條件才跳出,返回相應的數(shù)據(jù)。
cats表: CREATE TABLE IF NOT EXISTS `cats` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pid` int(11) DEFAULT '0',
`name` varchar(50) NOT NULL,
`ord` int(6) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=132 ;
INSERT INTO `cats` (`id`, `pid`, `name`, `ord`) VALUES
(1, 0, '特效分類', 1),
(2, 0, '難易程度', 2),
(3, 2, '入門級', 1),
(4, 2, '初級', 2),
(5, 2, '中級', 3),
(6, 2, '高級', 4),
(7, 1, '圖片代碼', 1),
(8, 1, '導航菜單', 2),
(9, 1, '選項卡/滑動門', 3),
......
演示一:返回字符串 echo get_str(0, 0); //輸出無限級分類
function get_str($id = 0, $level = 0) {
global $str;
$sql = "select id,name from cats where pid= $id";
$result = mysql_query($sql); //查詢pid的子類的分類
if ($result && mysql_affected_rows()) {//如果有子類
$str .= '
- ';
$level++;
while ($row = mysql_fetch_array($result)) { //循環(huán)記錄集
$str .= "
" . $row['id'] . "--" . $row['name'] . $level . ""; //構建字符串get_str($row['id'], $level); //調用get_str(),將記錄集中的id參數(shù)傳入函數(shù)中,繼續(xù)查詢下級
}
$str .= '
';}
return $str;
}
演示二:返回數(shù)組 $list = get_array(0); //調用函數(shù)
print_r($list); //輸出數(shù)組
function get_array($id = 0) {
$sql = "select id,name from cats where pid= $id";
$result = mysql_query($sql); //查詢子類
$arr = array();
if ($result && mysql_affected_rows()) {//如果有子類
while ($rows = mysql_fetch_assoc($result)) { //循環(huán)記錄集
$rows['list'] = get_array($rows['id']); //調用函數(shù),傳入?yún)?shù),繼續(xù)查詢下級
$arr[] = $rows; //組合數(shù)組
}
return $arr;
}
}
總結
以上是生活随笔為你收集整理的php 递归分销角色,PHP递归无限分类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java学习(165):inetaddr
- 下一篇: basename php 中文,php